1900分图论
卡常带师
这个作者很懒,什么都没留下…
展开
-
Codeforces图论刷题
题目链接:https://codeforces.com/problemset/problem/1439/B 解题思路:很容易想到和拓扑排序类似的思路,删点判断答案。关键在于如何判断度数为k-1的完全图,这个地方只需要再每次删点之前判断一下就好了 //#define LOCAL #include <bits/stdc++.h> using namespace std; #define ll long long #define mem(a, b) memset(a,b,sizeof(a)) .原创 2020-11-21 17:00:05 · 240 阅读 · 0 评论 -
CF1422D Returning Home
题目链接:https://codeforces.com/problemset/problem/1422/D 稍微思考一下可以很直接的得到,最后的答案无非两种情况: 从瞬移点普通的走到终点 从起点普通的走到终点 由此我们可以转换问题,我们只需要求出起点到所有瞬移点的最小距离就好了 这里可以发现,从一个点到一个点和两个点之间纵坐标,横坐标的差值相关,这里我们把每个点拆成3个,一个点代表瞬移点的横坐标,一个点作为瞬移点的纵坐标,然后横纵坐标都链接瞬移点。瞬移点链接终点,起点链接瞬移点横坐标,瞬移点纵坐标,.原创 2020-11-12 11:09:24 · 214 阅读 · 0 评论 -
CodeForces 1423H Virus
题目链接:https://codeforces.com/problemset/problem/1423/H 这个题目,显而易见的需要可撤销并查集,然后发现,每条边有一个存在时间,我们只需要处理出这个存在时间,那么这个题目就可以使用线段树分治+可撤销并查集来维护。当然这个地方的时间与操作数量对等,而不是天数,如果是天数的话,处理询问会存在很大的麻烦,读者可以自己思考一下,但是如果这里以操作顺序为时间轴,那么就会简单很多,不会存在加边和查询的先后问题 //#define LOCAL #include <.原创 2020-11-11 23:40:04 · 178 阅读 · 0 评论 -
codeforces Yet Another DAG Problem
题目链接:https://codeforces.com/contest/1430/problem/G 这个题目可以采用状态压缩DP求解,最简单的是O(n*3^n)的暴力状态压缩DP,但是复杂度是不允许的,优化的也不会。这里参考了这篇博客,采用了最小割的建模方式,求解这个题目(https://www.luogu.com.cn/problem/solution/CF1430G) 这里提供一个O(n*3^n)的状态压缩DP //#define LOCAL #include <bits/stdc++.h&.原创 2020-11-10 23:25:46 · 158 阅读 · 0 评论 -
CF1442C Graph Transpositions 分层图
题目链接:https://codeforces.com/problemset/problem/1442/C 解题思路:发现当反转18次的时候,代价是超过最大的m的,所以分开讨论,首先计算出从起点到达终点最少需要多少次反转,如果超过18次,按最少次数转移,同时计算出最少次数下的最短路,当小于18次时,这个时候,所需要的所有代价不会超过long long(所以取模后不会丢失大小关系),所以可以直接使用dijkstra求解 //#define LOCAL #include <bits/stdc++.h&.原创 2020-11-06 15:12:33 · 290 阅读 · 0 评论 -
1900分图论?E - Tree Reconstruction 思维+构造
//#define LOCAL #include <bits/stdc++.h> using namespace std; #define ll long long #define mem(a, b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f #define DNF 0x7f #define DBG printf("this is a input\n") #define fi first #define se second #define mk.原创 2020-06-11 11:45:28 · 162 阅读 · 0 评论 -
1900分图论:1095F 贪心构造+最小生成树
//#define LOCAL #include <bits/stdc++.h> using namespace std; #define ll long long #define mem(a, b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f #define DNF 0x7f #define DBG printf("this is a input\n") #define fi first #define se second #define mk.原创 2020-06-11 10:03:38 · 127 阅读 · 0 评论 -
1900分图论:1105D 多源bfs (写法复杂度不够优秀)
//#define LOCAL #include <bits/stdc++.h> using namespace std; #define ll long long #define mem(a, b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f #define DNF 0x7f #define DBG printf("this is a input\n") #define fi first #define se second #define mk.原创 2020-06-11 10:02:31 · 150 阅读 · 0 评论 -
1900分图论:1133F2 思维+并查集+构造 固定根为k的生成树
//#define LOCAL #include <bits/stdc++.h> using namespace std; #define ll long long #define mem(a, b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f #define DNF 0x7f #define DBG printf("this is a input\n") #define fi first #define se second #define mk.原创 2020-06-11 10:01:16 · 135 阅读 · 0 评论 -
1900分图论: 1141G 思维+构造
//#define LOCAL #include <bits/stdc++.h> using namespace std; #define ll long long #define mem(a, b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f #define DNF 0x7f #define DBG printf("this is a input\n") #define fi first #define se second #define mk.原创 2020-06-11 09:59:47 · 123 阅读 · 0 评论 -
1900分图论 : 1183E1 LCA + Kruskal
//#define LOCAL #include <bits/stdc++.h> using namespace std; #define ll long long #define mem(a, b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f #define DNF 0x7f #define DBG printf("this is a input\n") #define fi first #define se second #define mk.原创 2020-06-11 09:58:34 · 149 阅读 · 0 评论 -
1900分图论:Nearest Opposite Parity 建图+超级源点
1.为何建立反图 如果不建立反图,那么只能暴力每一个点A进行一遍最短路,筛选出符合条件距离最小的点。我们是要选出所有符合条件的点,距离A最小的点,可以考虑建立反图优化时间,一次性找出多个点 2.可以采用多源BFS或者建立超级源点再进行BFS //#define LOCAL #include <bits/stdc++.h> using namespace std; #define ll long long #define mem(a, b) memset(a,b,sizeof(a)) #原创 2020-06-03 17:35:14 · 237 阅读 · 0 评论 -
1900分图论:Two Fairs 寻找点对(x,y)必经a,b的个数
1.求必经a的点,可以在dfs时先将a点标记,然后从b点出发,最后不能到达的点,必经a的点 2.b点同理 3.乘法原理 //#define LOCAL #include <bits/stdc++.h> using namespace std; #define ll long long #define mem(a, b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f #define DNF 0x7f #define DBG printf("th原创 2020-06-03 17:23:11 · 187 阅读 · 0 评论 -
1900分图论:0-1MST 计算补图的最大联通块个数
//#define LOCAL #include <bits/stdc++.h> using namespace std; #define ll long long #define mem(a, b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f #define DNF 0x7f #define DBG printf("this is a input\n") #define fi first #define se second #define mk.原创 2020-06-03 17:19:00 · 168 阅读 · 0 评论