B - Graph Partition
当图中存在奇环的时候显然无解(可以考虑 x , y x,y x,y之间存在边意味着 x x x与 y y y所属的点集的下标奇偶性不同),否则一定有解。
如果存在划分成 k k k个集合的方案,那么图中必定存在两个点,它们之间的最短路径的边数是 k − 1 k-1 k−1。设 d i s ( x , y ) dis(x,y) dis(x,y)表示 x , y x,y x,y之间的最短路的边数, 1 + max x , y { d i s ( x , y ) } 1+\max_{x,y}\{dis(x,y)\} 1+maxx,y{ dis(x,y)}显然是答案的一个上界。
而这个上界是可以达到的。假设 d i s ( x , y ) dis(x,y) dis(x,y)最大,我们把到 x x x的最短路长度等于 l l l的点分入集合 V l + 1 V_{l+1} Vl+1,就可以得到合法的方案。
C - Division by Two with Something
题目中的操作相当于删去二进制最低位,然后把删去的位取反放在最高位之前。
对于任意的一个数 X X X,它在 2 N 2N 2N次操作之后都必然会变成它本身。所以,倘若 X X X在 d d d次操作之后变成了它本身,那么 X X X在 gcd ( d , 2 N ) \gcd(d,2N) gcd(d,2N)次操作后一定也变回了它本身。所以, X X X的最小操作次数一定是 2 N 2N 2N的约数。
观察发现,对于某一个 d ∣ 2 N d\mid 2N d∣2N,如果 X X X在 d d d次操作之后变回了本身,那么 X X X一定由 2 N d \frac{2N}{d} d2N段组成, 2 N d \frac{2N}{d} d2N是奇数,且 X X X有如下的形式: A A ′ A A ′ ⋯ A AA'AA'\cdots A AA′AA′⋯A,其中 A A A是一个长度为 d 2 d\over 2 2d的 01 01 01串, A ′ A' A′表示 A A A把每一位取反之后得到的结果。
枚举所有的满足 d ∣ N d\mid N d∣N且 N d N\over d dN是奇数的 d d d,然后计算 2 d 2d 2d次操作之后变回本身的数的个数(不要求 d d d是最小操作次数),再通过容斥原理就可以算出 2 d 2d 2d为最小操作次数的数的个数。
如何判断一个 A A ′ A A ′ ⋯ A AA'AA'\cdots A AA′AA′⋯A是否小于等于题目给出的 X X X?先比较前 ∣ A ∣ |A| ∣A∣位,如果不相同就可以确定 A , X A,X A,X的大小关系;否则,由于和 X X X的前 ∣ A ∣ |A| ∣A∣位都相同的 A A A只有一个,可以暴力 O ( ∣ X ∣ ) O(|X|) O(∣X∣)判断。拓展到对 A A ′ A A ′ ⋯ A AA'AA'\cdots A AA′AA′⋯A的计数就是:枚举 A A A与 X X X不同的最高位是哪一位,之后的位可以随意取,并特殊判断 X X X的前 ∣ A ∣ |A| ∣A∣位和 A A A完全相同的情况。
D - Incenters
对于某一个 △ A B C \triangle_{ABC} △