摘要:
我们可以把每段连续可以选的字符看成一个游戏, 那么sg[ i ]表示连续 i 个字符可选的sg值。 然后找找第一个就好啦。 阅读全文
摘要:
Dish Shopping 将每个物品拆成p 和 s 再加上人排序。 然后问题就变成了, 对于一个线段(L - R), 问有多少个(li, ri)满足 L >= li && R >= ri, 这个东西可以直接树状数组套平衡树维护。 但是这个题目有个特殊性,因为排好序之后不会存在 li > L && 阅读全文
摘要:
刚开始, 我以为两个点肯定是通过树上最短路径过去的, 无非是在两棵树之间来回切换, 这个可以用倍增 + dp 去维护它。 但是后来又发现, 它可以不通过树上最短路径过去, 我们考虑这样一种情况, 起点在奇树里面, 终点在偶树里面, 然后这两个点最短路径里面点到对应点的距离都很大, 这种情况下我们就需 阅读全文
摘要:
Extending Set of Points 我们能发现, 如果把x轴y轴看成点, 那么答案就是在各个连通块里面的x轴的个数乘以y轴的个数之和。 然后就变成了一个并查集的问题, 但是这个题目里面有撤销的操作, 所以我们要把加入和撤销操作变成 这个点影响(L , R)之间的询问, 然后把它丢到线段树 阅读全文
摘要:
Adam and Tree 感觉非常巧妙的一题。。 如果对于一个已经建立完成的树, 那么我们可以用dp[ i ]表示染完 i 这棵子树, 并给从fa[ i ] -> i的条边也染色的最少颜色数。 mnson[ i ][ 0 ] 和 mnson[ i ][ 1 ]分别表示 i 的儿子的dp值的最大和第 阅读全文
摘要:
#include #define LL long long #define fi first #define se second #define mk make_pair #define PLL pair #define PLI pair #define PII pair #define SZ(x) ((int)x.size()) #define ull unsigned long long ... 阅读全文
摘要:
第一次看到这种骚东西, 期望还能二分的啊??? 因为存在重置的操作, 所以我们再dp的过程中有环存在。 为了消除环的影响, 我们二分dp[ 0 ][ 0 ]的值, 与通过dp得出的dp[ 0 ][ 0 ]的值进行比较。 这样看着好像很不合理, 但实际上比较这两个值, 你能推倒出当前二分的值合不合法。 阅读全文
摘要:
Cooperative Game 智商题, 感觉不太能推出来, 虽然看看证明过程是对的。 阅读全文