摘要: 神题呀,我们观察到行走的方式一定是一条链+若干条环. 然后环可以看成是一对括号,所以来一个基于括号序的 DP. code: #include <bits/stdc++.h> #define ll long long #define N 3040 #define setIO(s) freopen(s" 阅读全文
posted @ 2020-02-28 23:30 EM-LGH 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 这种图论问题都挺考验小思维的. 首先,我们把从 $x$ 连出去两条边的都合并了. 然后再去合并从 $x$ 连出去一条原有边与一条新边的情况. 第一种情况直接枚举就行,第二种情况来一个多源 bfs 即可. code: #include <cstdio> #include <string> #inclu 阅读全文
posted @ 2020-02-28 17:23 EM-LGH 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 用 LCT 维护颜色相同连通块,然后在线段树上查一下逆序对个数就可以了. code: #include <cstdio> #include <algorithm> #include <cstring> #include <string> #define N 100005 #define ll lon 阅读全文
posted @ 2020-02-28 16:46 EM-LGH 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 非常好的一道图论问题. 显然,我们要求城市间的最小生成树,然后查询路径最大值. 然后我们有一个非常神的处理方法:进行多源 BFS,处理出每一个城市的管辖范围. 显然,如果两个城市的管辖范围没有交集的话连边一定不是优秀的(一定会有一种都在管辖范围之内的连边方式来代替这种连边方式) 然后由于每一个点只属 阅读全文
posted @ 2020-02-28 09:20 EM-LGH 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 按照挂件数量排序,然后做一个 DP 就好了. code: #include <bits/stdc++.h> #define ll long long #define N 2003 #define setIO(s) freopen(s".in","r",stdin) using namespace s 阅读全文
posted @ 2020-02-28 00:22 EM-LGH 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 显然,我们可以将询问按照规定时间从小到大排序,依次处理. 那么我们显然要求合法的点中从 $n$ 号点出发到达点 $i$ 的最迟时间,我们令这个为 $f[i]$ 而 $f[i]$ 显然可以用最短路来求. 如果求 $n$ 次最短路的话显然超时,但是我们可以对于每一个节点所连边排序,然后每次枚举之前没有扩 阅读全文
posted @ 2020-02-28 00:01 EM-LGH 阅读(144) 评论(0) 推荐(0) 编辑