上一页 1 ··· 31 32 33 34 35 36 37 38 39 ··· 65 下一页
摘要: 搞一个栈模拟即可。对比一下和一年前考场上的代码233 阅读全文
posted @ 2018-11-08 17:29 Gloid 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 看到比值先二分答案。于是转化成一个非常裸的树形背包。直接暴力背包的话复杂度就是O(n2),因为相当于在lca处枚举每个点对。这里使用一种更通用的dfs序优化树形背包写法。https://www.cnblogs.com/zzqsblog/p/5537440.html 即设f[i][j]为在dfs序第i 阅读全文
posted @ 2018-11-08 16:13 Gloid 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 对反图跑最短路求出每个点到终点的最短路径,令其为估价函数大力A*,第k次到达某个点即是找到了到达该点的非严格第k短路,因为估价函数总是不大于实际值。bzoj可能需要手写堆。正解是可持久化可并堆,至今是第二次见到这个那当然是不学啦。 阅读全文
posted @ 2018-11-08 12:47 Gloid 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 注意到模数被给出且非常小,做法肯定要依赖于一些与此相关的性质。找题解打表可以发现循环节长度的lcm不超过60。 考虑怎么用线段树维护循环。对线段树上每个点维护这段区间的循环节、在循环中的位置,如果未进入环特殊记录;每次修改对于未进入环的暴力修改,已进入环的更新在循环节上的位置即可。对于修改经过的节点 阅读全文
posted @ 2018-11-08 01:48 Gloid 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 首先跑正反两遍dij求由起点/终点到某点的最短路条数,这样条件一就转化为f(S,A)*f(T,A)+f(S,B)*f(T,B)=f(S,T)。同时建出最短路DAG,这样图中任何一条S到T的路径都是最短路径,对于条件二就只需要判断A是否能走到B。注意到空间开的非常大。那么对于条件二的可达性显然是可以b 阅读全文
posted @ 2018-11-07 17:32 Gloid 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 将未建立贸易关系看成连一条边,那么这显然是个二分图。最大城市群即最大独立集,也即n-最大匹配。现在要求的就是删哪些边会使最大匹配减少,也即求哪些边一定在最大匹配中。 首先范围有点大,当然是跑个dinic,转化成最大流。会使最大流减少的边相当于可能在最小割中的边,因为删掉它就相当于无代价的割掉了一条边 阅读全文
posted @ 2018-11-07 00:02 Gloid 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 首先将棋盘黑白染色,不妨令空格处为黑色。那么移动奇数次后空格一定处于白色格子,偶数次后空格一定处于黑色格子。所以若有某个格子的棋子颜色与棋盘颜色不同,这个棋子就是没有用的。并且空格与某棋子交换后,棋子所在的格子改变使得该棋子与棋盘颜色不同,那么该棋子也会变为无用棋子。那么问题变为空格在棋盘上黑白格子 阅读全文
posted @ 2018-11-06 17:42 Gloid 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 带权并查集按秩合并即可维护。 阅读全文
posted @ 2018-11-06 13:39 Gloid 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 显然可以用LCT维护kruskal重构树。或者启发式合并维护kruskal重构树的倍增数组虽然多了个log也不一定比LCT慢吧。 当然这里的kruskal重构树几乎只是把树上的边权换成了点权,并不重要。 我们要查询的是树上两点间路径边权最大值。显然要并查集按秩合并一波。然后……并查集的树高就是log 阅读全文
posted @ 2018-11-06 12:49 Gloid 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 首先显然可以通过孤立角落里的跳蚤使其不连通,所以只要有解答案就不会大于2。同样显然的一点是当且仅当跳蚤数量<=2且连通时无解。做法其实也很显然了:特判无解,若跳蚤不连通输出0,否则看图中是否无割点(即点双连通),若无答案为2,否则为1。 现在的问题是这个图实在是太大了。正常的离散化可能仍然需要留下c 阅读全文
posted @ 2018-11-05 21:53 Gloid 阅读(233) 评论(0) 推荐(0) 编辑
上一页 1 ··· 31 32 33 34 35 36 37 38 39 ··· 65 下一页