随笔分类 -  图论

摘要:Mikuuu 准备投身于ACM的潮流中,失踪人口回归啦! 这个题目的思路还是非常有趣的,因为我们可以注意到,两个可能成为答案兴趣点之间的最短路不应该经过了第三个点,如果经过了,显然和第三个点之间的最短路会更小,则原来的两个点之间不应该成为答案。 考虑到这一点,我们可以想到建枚举每一条边,找到这一条边 阅读全文
posted @ 2024-03-13 22:36 Simex 阅读(8) 评论(0) 推荐(0) 编辑
摘要:Link 首先我们想这样的问题,为什么强调是2x 呢?我们记平均值是 avg,然后可以注意到,应该有一下式子被满足 ai2xi+2yi=avg,移项,可以得到aiavg=2yi2xi,而这个式子中xi和\(y_i\ 阅读全文
posted @ 2023-09-25 19:52 Simex 阅读(11) 评论(0) 推荐(0) 编辑
摘要:事实上我们可以发现,如果bi=x最后,那么我们可以连一条边,从ix 这样我们就得到了一个有向图,在这张有向图呢,可以证明的是 如果k=1,那么必须全部都是自环。 若不成立,则必须每个环的大小恰好为k 这样就可以解决了。 #include<cstdio> # 阅读全文
posted @ 2023-09-18 09:47 Simex 阅读(17) 评论(0) 推荐(0) 编辑
摘要:link 首先我们要明白,floyed的本质上是一个dp,那么显然我们要先跑一边floyed,然后进行更新 当我们更新的两个点之间的距离的时候,显然我们改变的是和它们有关的距离,所以只要更新这两个边就可以了. #include<cstdio> #include<iostream> #include< 阅读全文
posted @ 2023-09-14 21:09 Simex 阅读(34) 评论(0) 推荐(0) 编辑
摘要:[link](https://codeforces.com/contest/1851) #### A 非常简单的比较大小问题 ```cpp #include #include #include #include #include #include #include #include #include 阅读全文
posted @ 2023-07-28 18:02 Simex 阅读(21) 评论(0) 推荐(0) 编辑
摘要:Jisoo 什么时候两个点中间夹得那个点不会被走?当他不在最短路上的时候。 按照这个思想进行检查就行了。 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include< 阅读全文
posted @ 2021-11-08 17:22 Simex 阅读(25) 评论(0) 推荐(0) 编辑
摘要:Jisoo 通常来讲这种题可以按照边来考虑 当然也可以按照点对。 对于任意一个点对,在新图上的距离是在原图上的一半上取整,这样,我们可以先把原来的距离都求出来,奇数点和偶数点求出来并且化简一波式子。 #include<cstdio> #include<iostream> #include<cstri 阅读全文
posted @ 2021-11-07 19:12 Simex 阅读(22) 评论(0) 推荐(0) 编辑
摘要:Miku 如果我们知道哪两个点可以用跑路机1s到达就好办了 怎么知道呢?如果两个点的距离可以为2k,那么一定有一个中转接点,到两个点的距离都是2k1,也就是如此了。 这样显然可以用floyd预处理出来距离 #include<iostream> #include<cstdio> #i 阅读全文
posted @ 2021-10-31 12:13 Simex 阅读(18) 评论(0) 推荐(0) 编辑
摘要:Lisa 显然一定会走n1条边,会有一条边剩下走不了 这一条边是谁呢 这个图上有一个环,这个环呢上的每一个点,他走不到的那个边一定是在这个环上的和它相邻的那两个边当中的那个美观度较小的(显然等到回来的时候就是走完了) 对于不在换上的点,一定会走到环上,然后就和第一种情况一样了. #includ 阅读全文
posted @ 2021-10-30 11:47 Simex 阅读(34) 评论(0) 推荐(0) 编辑
摘要:JIsoo 首先考虑floyd本质就是dp,然后扔进新的一维fi,j,k,表示i和j之间经过k条边的最短路 枚举的时候是5个for?那也太疯狂了。 考虑一下如果i和j经过k能够作为当前边数的最短路的话,如果k和i,j距离不是1,那么在这一条路径上,一定可以用距离i为1的那个点来更新,这样的 阅读全文
posted @ 2021-10-19 14:27 Simex 阅读(35) 评论(0) 推荐(0) 编辑
摘要:jisoo 简单的二分 #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> using namespace std; int n,m; struct po{ int x; 阅读全文
posted @ 2021-09-18 21:49 Simex 阅读(39) 评论(0) 推荐(0) 编辑
摘要:jisoo 可以证明,一定只需要考虑需要翻转的边 如果一种合法方案,需要翻转不需要翻转的边,那么就必然有一个过程是把这条边翻转过来, 那么这一条边有两种可能,要不它连着偶数个由需要翻转的边组成的环,要不是有许多同样的此类不翻转边组成的环 对于以上两种可能,可以发现都会出现需要翻转的边连成环的可能。 阅读全文
posted @ 2021-09-18 21:47 Simex 阅读(82) 评论(0) 推荐(0) 编辑
摘要:jisoo 这是一个拓扑排序,对于一条路线,中间没有走过的节点,一定等级低于路线上经过的节点 然后就可以了 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #defin 阅读全文
posted @ 2021-09-18 21:40 Simex 阅读(48) 评论(0) 推荐(0) 编辑
摘要:Lisa 这要构建一个什么玩意 K进制haffum树 然后节点数不够咋办 加空节点‘ #include<iostream> #include<cstdio> #include<algorithm> #include<queue> #define int long long using namespa 阅读全文
posted @ 2021-08-17 22:12 Simex 阅读(31) 评论(0) 推荐(0) 编辑
摘要:Lisa 显然会形成一个图的结构,显然这玩意极有可能出现环 那咋办呢 从每一怪兽出发似乎都可以形成一个子问题。 每一个问题都是用自己所能到达的怪兽的花费来更新自己,如果自己更新了,就有机会更新自己的父亲 显然不会一直更新下去,这个环是有极限的。 所以好像出现了一个类似于spfa的结构 就是首先每个点 阅读全文
posted @ 2021-08-09 22:20 Simex 阅读(37) 评论(0) 推荐(0) 编辑
摘要:Aimee 2-sat的模板题 显然根据题目所给内容,我们可以根据每一个菜的做法,推断出另一个菜的做法,然后连边 这样会出现一个个的环,这个环不能有矛盾 也就是满式和汉式不能同时被推出 #include<iostream> #include<cstdio> #include<cstring> #in 阅读全文
posted @ 2021-08-08 23:17 Simex 阅读(26) 评论(0) 推荐(0) 编辑
摘要:blackpink O(n2)显然不过我们应该优化成O(nlogn) 采用树上启发式合并 仿照树链剖分的思想,对于每一个位置,我们先处理所有的轻儿子,然后处理重儿子,统计当前节点的答案,最后把轻儿子删掉就可以了。 这样全局一个桶就够用了。 #include<iostream> #inclu 阅读全文
posted @ 2021-08-06 21:40 Simex 阅读(78) 评论(0) 推荐(0) 编辑
摘要:Archie 建反图,dfs #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; int n,m; int x,y; struct e{ int to; int 阅读全文
posted @ 2021-07-28 17:27 Simex 阅读(27) 评论(0) 推荐(0) 编辑
摘要:Jisoo tarjan求割边 对于一条(u,v),如果他是割边,那么v子树中一定有一个点slows>dfnu 然后改造一下搜索函数 #include<iostream> #include<cstdio> #include<algorithm> #include<stack> using 阅读全文
posted @ 2021-07-27 23:36 Simex 阅读(34) 评论(0) 推荐(0) 编辑
摘要:Jisoo 如果这玩意成不了二分图,肯定有环,而且还是肯定有一个三元环 如果一个点到两个点的距离>k那么这两个点之间的距离一定大于k 那么我们只要确定存不存在这样的三元组就可以了 怎么确定呢 画图可得,如果有三元环,那么这个三元环一定会存在一种包括两端点的情况 然后就显然我们要找直径,检查每一个 阅读全文
posted @ 2021-07-27 23:33 Simex 阅读(65) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示