首页 > 其他分享 >[XVI Open Cup GP of China] A. Graph Drawing

[XVI Open Cup GP of China] A. Graph Drawing

时间:2023-11-27 21:33:20浏览次数:31  
标签:度数 一个点 Cup Graph 拐点 流量 要么 GP 拐弯

那确实是神仙题,阅读 jiangly 代码遂取之。

简要题意

给定一个点双联通的平面图,保证每个点的度数不超过 \(4\);具体地对于每个面将会按照逆时针顺序给出上面的顶点。现在要求把它画在无限大的网格上,要求边都平行于坐标轴,且彼此除了两端点外不接触。由于可能不能画出来,允许边进行任意的直角拐弯。求最少的总拐弯次数。

解法

点双联通的目的是防止一个点四条出边都在同一个面上这种恶劣情况的出现。

考虑最简单的合法面——长方形,发现它有四个拐弯点。一个拐弯点要么在某个给定的点上,要么在边上(此时有 \(1\) 的代价)。考虑一些更复杂的面,虽然此时拐弯点的总数可能变多了,但是我们考虑给它们这样分类:逆时针沿着环走,一个拐弯点是向左拐的还是右拐的。容易发现向左拐的点恰好比向右拐的点多 4 个。接下来观察点:考虑如果一个点有两条邻边(也就是有两个相邻面)则它要么在两个面中都不是拐点,要么在其中一个是左拐点,另一个是右拐点;而如果一个点度数为三,则它在其中恰好两个邻面成为左拐点;如果度数为四它在全部的四个邻面成为左拐点。边上的拐弯可以视作以 \(1\) 的代价新增一个二度点。此外,最外面一个额外加入的(无穷延伸的)面比较特别——它多出四个右拐点而不是左拐点。我们断言只需要确定了每个点和边对它周围的面的拐点贡献,就一定能得到一种合法嵌入方法。这个证明我不会,意淫一下就很对。

那么很自然的,想到使用网络流刻画这一过程:具体地,每个内部面必须接受 \(4\) 的流量,而最外面的面必须提供 4 的流量。一条边可以以 \(1\) 的代价在两个面之间传递流量;而一个二度点可以以 \(0\) 的代价传递。一个三度点向周围的三个面提供 \(2\) 的流量;一个四度点向周围 \(4\) 个面各自提供 \(1\) 的流量。这样的一个最小费用最大流答案即一组合法解。

标签:度数,一个点,Cup,Graph,拐点,流量,要么,GP,拐弯
From: https://www.cnblogs.com/kyeecccccc/p/17860528.html

相关文章

  • 向chatgpt提问的艺术,汇总1000条常用提问指令
    畅销书《瓦尔纳宝典》指出现代人不再分为富人和穷人,白领和蓝领了,现代人的二分法为“利用了杠杆的人”和“没有利用杠杆的人”。要想获得财富,就要充分利用杠杆效应。商业杠杆分为三类,一类是资本,一类是劳动力,最后一种杠杆是最新出现的,也是普通人触手可及的,就是复制边际成本为零的产......
  • 【分享】GPS北斗卫星对时服务(NTP时间服务器)搭建教程详解
    【分享】GPS北斗卫星对时服务(NTP时间服务器)搭建教程详解【分享】GPS北斗卫星对时服务(NTP时间服务器)搭建教程详解京准电子科技官微——ahjzsz网络时间协议,英文名称:Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议,这篇文章主要介绍了Windows搭建NTP时间同步服务器......
  • 文心一言 VS 讯飞星火 VS chatgpt (144)-- 算法导论12.1 4题
    四、用go语言,对于一棵有n个结点的树,请设计在O(n)时间内完成的先序遍历算法和后序遍历算法。我个人喜欢灵小智。文心一言:在Go语言中,我们可以使用递归来实现树的前序遍历和后序遍历。以下是实现这两种方法的代码。首先,我们定义一个树节点的结构:typeTreeNodestruct{V......
  • 文心一言 VS 讯飞星火 VS chatgpt (144)-- 算法导论12.1 4题
    四、用go语言,对于一棵有n个结点的树,请设计在O(n)时间内完成的先序遍历算法和后序遍历算法。我个人喜欢灵小智。文心一言:在Go语言中,我们可以使用递归来实现树的前序遍历和后序遍历。以下是实现这两种方法的代码。首先,我们定义一个树节点的结构:typeTreeNodestruct{......
  • XXII Open Cup named after E.V. Pankratiev, Grand Prix of IMO
    Contestlink:XXIIOpenCupnamedafterE.V.Pankratiev,GrandPrixofIMO。M.Math题意:给你一个长度为\(n\)的数组\(a\),求有多少对\((i,j)\)满足\(a_i^2+a_j\)是完全平方数。\(1\len,a_i\le10^6\)。根据\(a\)统计出\(cnt\)数据,然后直接暴力枚举值即可。A.......
  • 【略读论文|时序知识图谱补全】Tucker Decomposition with Frequency Attention for T
    会议:ACL,时间:2023,学校:北京航空航天大学,多伦多大学关键词:基于张量分解;频率注意力;正则化摘要:之前基于张量分解的TKGC模型存在仅独立考虑一种关系与一个时间戳的组合,忽略了嵌入的全局性质的问题。本文的方法:一种频率注意力(FA)模型来捕获一个关系与整个时间戳之间的全局时间依赖性。......
  • GPTs 初体验 - 1 分钟就能创建一个自己的 ChatGPT? | 京东云技术团队
    就在11.10号早上,ChatGPT已经偷摸的把GPTs功能,开放给所有尊贵的Plus用户了。随着这波的功能开放,界面也是改了不少。点击左侧的Explore或者左下角的用户处,就可以直接进入新的GPTs功能:这里可以看到我们自己创建的GPT,下面呢还有OpenAI官方出品的GPTs:不过这些官方的,目前看......
  • Information Graph 题解
    题目链接InformationGraph分析在线并不好做,考虑离线,先将树建出来\(2\)操作时\(x\)节点与当前根节点之间的点都会获得文件当前根节点可以用并查集维护对于查询的节点判断它是否为链上的点即可具体的,若该节点为\(rt\)子树中的点且该节点的子树包含\(x\)节点,它就......
  • 文心一言 VS 讯飞星火 VS chatgpt (143)-- 算法导论12.1 3题
    三、用go语言,设计一个执行中序遍历的非递归算法。(提示:一种容易的方法是使用栈作为辅助数据结构;另一种较复杂但比较简洁的做法是不使用栈,但要假设能测试两个指针是否相等。)文心一言,代码正常运行:我们可以使用栈作为辅助数据结构来执行中序遍历的非递归算法。以下是用Go语言实现的代......
  • 文心一言 VS 讯飞星火 VS chatgpt (143)-- 算法导论12.1 3题
    三、用go语言,设计一个执行中序遍历的非递归算法。(提示:一种容易的方法是使用栈作为辅助数据结构;另一种较复杂但比较简洁的做法是不使用栈,但要假设能测试两个指针是否相等。)文心一言,代码正常运行:我们可以使用栈作为辅助数据结构来执行中序遍历的非递归算法。以下是用Go语言实现......