摘要:
Peaks ( Gym 100365H ) 这题nk做法还挺正常的。。后面那个循环就很恶心了 考虑 dp\[i][j] 表示长度为i的排列,恰好有k个峰的方案数量。 然后转移就是把 i 插入 i 1 的排列。 i显然是i 1的排列里面最大的数,然后插入就只有两种情况: 1. 插入在峰的左右,由于峰不 阅读全文
posted @ 2019-10-11 10:40
yijan
阅读(119)
评论(0)
推荐(0)
摘要:
一种优化方法,具体例子可以看 "这里" 这里只是存一下手写Bitset的板子 cpp struct Bitset { unsigned a[1600]; void reset() { memset(a,0,sizeof(a)); } Bitset() { reset(); } void flip(i 阅读全文
posted @ 2019-10-11 09:30
yijan
阅读(1268)
评论(0)
推荐(3)
摘要:
Sums gym100753M 同余最短路模板,然而这个东西貌似也可以做去年D1T2 首先我们选择一个模数作为基准,然后剩下的这样连边: 对于一个面值为 x 的硬币 ,当前在 u 这个点(感性理解一下吧) 1. u + x Mod 这种情况下可以 u 向 ( u + x ) mod Mod 连一条长 阅读全文
posted @ 2019-10-11 09:29
yijan
阅读(497)
评论(0)
推荐(0)
摘要:
Break up CF700C 首先考虑只能删一条边的做法,我们可以找出所有的桥,然后随便跑一条 S 到 T 路径,如果这条路径上有桥就说明可以,否则不行 发现这个做法其实是 O(M) 的 那么可以先随便找一条 N 到 M 的路径,分别尝试删这条路径上的边再套上面做法就好了。 cpp include 阅读全文
posted @ 2019-10-11 08:16
yijan
阅读(283)
评论(0)
推荐(0)
摘要:
Cycling City 毒瘤题 首先建dfs树,由于是个无向图所有返祖边都是连向祖先的。 判是否有解其实很简单,只要图不是一个仙人掌就有解了。 仙人掌有关可以看这个 "博客" 但是这道题由于要 输出路径 成功变成了一个一个顶俩的题。。。。。 通过判仙人掌我们确认了一个点,它连向自己父亲的路径至少被 阅读全文
posted @ 2019-10-11 06:57
yijan
阅读(353)
评论(0)
推荐(0)
摘要:
Unique Path AGC 038 D 考虑如果两个点之间只能有一个边它们就把它们缩起来,那么最后缩起来的每一块都只能是一棵树。 如果两个点之间必须不止一个边,并且在一个连通块,显然无解。 首先把所有树给连好,现在的可用的边的数量只有 $ m n + c $ 了。 然后两个连通块之间如果有超过一 阅读全文
posted @ 2019-10-11 06:49
yijan
阅读(204)
评论(0)
推荐(0)
摘要:
Run for beer CF 575G 如果直接bfs分层贪心可以做,但是很毒瘤,~~具体可以参考Gavinzheng的提交~~ 考虑魔改dijkstra 首先,每次拿权值最小的来松弛肯定没有问题,只是怎么表示路径长度 由于边权很小,我们只需要拿 排名 10 + w 当权值就可以了。 这里的“权值 阅读全文
posted @ 2019-10-11 06:48
yijan
阅读(261)
评论(0)
推荐(0)
摘要:
曼哈顿距离最小生成树 codechef Dragonstone 首先,对于每一个点来说有用的边只有它向它通过 x=0,y=0,y=x,y= x 切出来的八个平面的最近点。 证明 ~~我不会~~ ~~反正当结论记住就行了~~ 然后我们就只需要考虑右上这个区间的点(因为看起来最好做) 其他的区间可以通过 阅读全文
posted @ 2019-10-11 06:47
yijan
阅读(165)
评论(0)
推荐(0)

浙公网安备 33010602011771号