04 2017 档案

摘要:传送门这道题网上主要有两种方法,我都想了一遍,写点总结,我自己看。第一种是找到的一种好理解的方法,sex[a]=b相当于点a的原配是b,之后若出现a c,就把c和sex[a]=b合并,相当于情敌之间合并到一起,因为是情敌了,所以肯定是同性了,之后若有点对在同... 阅读全文
posted @ 2017-04-23 18:39 CrossingOver 阅读(120) 评论(0) 推荐(0)
摘要:传送门这个题借鉴了别人思想自己写的,题目大意是,给定图,保证每两点之间最多有一条直接相连的边,先给出原始图,然后Q次更新,每次增加某条边的权值,每次更新独立,求出本次的mst值,最后求平均。 所以问题就是根据每次更新以及原始mst求最新mst。两种情况, ... 阅读全文
posted @ 2017-04-18 21:41 CrossingOver 阅读(104) 评论(0) 推荐(0)
摘要:传送门这个题也是类似求比值最优的问题,应该不能简单贪心求解,就只好枚举喽。 A是某条边上两点的点权之和,B是在上述两点已经连通的情况下图的最小生成树的值。想让A/B最大。 枚举每条边,也就枚举了每种可能的A,有两种情况: - 该边 是 mst上的边,在这两... 阅读全文
posted @ 2017-04-10 23:28 CrossingOver 阅读(67) 评论(0) 推荐(0)
摘要:传送门这题不会。还以为有什么方法能直接搞出来最小的ratio以及那些点,结果就是枚举,不过就算是枚举我也写不出来啊~ 主要的思想就是dfs选择m个点,而且更重要的是 不是中途选够了m个点就怎么样怎么样,而是必须搞到最后一层,这样select的值才完备了,所以... 阅读全文
posted @ 2017-04-10 16:22 CrossingOver 阅读(95) 评论(0) 推荐(0)
摘要:传送门图同构问题 Graph Isomorphism不过这道题中点的最大度是2,所以图的构型中每个连通分量要么是链(或单个点),要么是单环,所以同等大小的连通分量要区分两种,之后挨个对比就行了。 我一直使用的都是并查集的“根记录个数(负值)版本”。 C++... 阅读全文
posted @ 2017-04-10 15:52 CrossingOver 阅读(75) 评论(0) 推荐(0)
摘要:传送门找两点间最长边(一条路径)的最小值(所有路径),这个值的意义在本题中相当于这两点可以在某种意义上连通了,然后给定一个值L问你最多能连通多少种两点。 需要注意的是L不是和的上限,而是单个两点间费用的上限。所以只用想有多少种两点间的费用小于等于L就行了。 ... 阅读全文
posted @ 2017-04-10 14:18 CrossingOver 阅读(96) 评论(0) 推荐(0)
摘要:传送门给定点之间的关系,让你判断序列是否唯一或者非法。 注意的是 点之间相等的话总是可以根据另一种关系排序,所以如果某些点相等的话就不用考虑他们之间的关系了(他们之间的排序是唯一且固定的),而且他们在总排序上是连续的。 所以相等的一些点可以看成一个连通分量,... 阅读全文
posted @ 2017-04-09 23:19 CrossingOver 阅读(219) 评论(0) 推荐(0)
摘要:传送门这题不会,记住写法就行了,好像都是这么写的?第一次从最小边开始往上添,第二次从第二小边开始。。。每次添边直到那俩点连通,每次记录该次的极差并更新最优值。可得到的结论是,第i+1次添的最后一条边肯定不会比第i次添的最后一条边权值还小。(2019年4月12... 阅读全文
posted @ 2017-04-08 21:46 CrossingOver 阅读(185) 评论(0) 推荐(0)
摘要:传送门3371的弱化版,怎么都能过。#include #include #include #include using namespace std;const int MAXN = 1e2 + 3;const int INF = 1e9;int dis[MA... 阅读全文
posted @ 2017-04-08 21:34 CrossingOver 阅读(103) 评论(0) 推荐(0)
摘要:传送门找最大连通分量,没有一对pairs就输出1。#include #include #include #include using namespace std;const int MAXN = 1e7 + 2;int pre[MAXN];int pairs... 阅读全文
posted @ 2017-04-08 21:26 CrossingOver 阅读(96) 评论(0) 推荐(0)
摘要:传送门这个题是判断是否为树。 树的边是有向的,树也可以为空。 代码里面,s指子结点集,total指结点集,v指边集。 还有一个坑,最后结束标志是负数而不一定-1?#include #include #include #include #include usi... 阅读全文
posted @ 2017-04-08 20:19 CrossingOver 阅读(100) 评论(0) 推荐(0)
摘要:传送门这题主要就是点的数量不确定,另外一个点都没有的话就是YES,而且这题数据里没有有环非连通图,所以直接判断边和点的数量关系即可。#include #include #include #include #include using namespace st... 阅读全文
posted @ 2017-04-08 20:07 CrossingOver 阅读(91) 评论(0) 推荐(0)
摘要:传送门这个题就是考建图,其实想起来以前玩的一个手机游戏就是这种类似铺管道的。 在矩阵里,每个点往4个方向看一下能不能和相邻点接上,但是这样的话要判断重复。更好的想法是往右下两个方向就行了,遍历矩阵按照外层从上到下,内层从左到右。#include #inclu... 阅读全文
posted @ 2017-04-08 18:04 CrossingOver 阅读(128) 评论(0) 推荐(0)
摘要:传送门这道题各种奇技淫巧,然而也只是勉强不超时。 题目中的k不是指k个连通的城市,是指k行信息,每行才是连通的城市,而且每行给出的不一定是连通分量。第一种用并查集做,关于连通的城市怎么处理,不能union两点(神tm超时),只能往边表里添加一条权值为0的边,... 阅读全文
posted @ 2017-04-08 17:40 CrossingOver 阅读(137) 评论(0) 推荐(0)
摘要:地址已经有些边连通了,用并查集的话就是先把这些边union了(记录conn,不加opt),再把未确定的边排序然后挨个union;用prim的话把这些边权值赋为0。#include #include #include #include using namesp... 阅读全文
posted @ 2017-04-08 16:28 CrossingOver 阅读(106) 评论(0) 推荐(0)
摘要:地址mst入门题,根据各个点坐标建N*(N-1)/2个边的图。#include #include #include #include #include #include using namespace std;const int INF = 1e9;cons... 阅读全文
posted @ 2017-04-08 15:21 CrossingOver 阅读(98) 评论(0) 推荐(0)