CF1746
ABC
没什么价值的题。
D
首先每次选路径一定会选到根。
要求儿子相差不超过 \(1\)。
所以每个点被选的次数弄出来了,那么每个儿子只有两种选法,选 \(\lceil\frac{cnt_u}{cson_u}\rceil,\lfloor\frac{cnt_u}{cson_u}\rfloor\)。
根据经典结论,如果直接动态规划,状态数为 \(O(n)\)。
E1
趣味题
考虑二分,发现不可二分,因为问 \(S,\overline S\) 是等价的,所以随便糊弄你就行。
所以考虑三分或者四分。
考虑解决 \(n=3\) 的基本情况。
先确定问题再处理的方式看上去不太可取。
所以我们多半是需要根据回答来决定下一个问题。
这就是一颗决策树。
问一个时,\(Y\) 的限制较强。
不妨先问 \(1\),如果是 \(N\),那么再问一遍 \(1\) ,还是 \(N\) 则排除 \(1\),如果是 \(Y\) 则回到最初的 \(Case\),此时问 \(2\),如果回答是 \(Y\) 则排除 \(3\),\(N\) 则排除 \(2\)。
那么用了 \(3\) 步将问题规模变为 \(\frac{2}{3}\)。
总步数为 \(3\log_\frac{3}{2}(10^5) \approx 85\),取整之后问题不大。
F
让人眼前一亮的随机化思路。
首先可以带修莫队 \(O(n^{\frac{5}{3}})\)。但是过不了。
先考虑 \(k\) 比较小的特殊情况,不妨就是 \(k=2\)。
左想右想,都没有办法比较好的合并信息,因为它没有办法写成经典的偏序计数问题。
没有办法这样合并,那就只能 \(O(n^2)\)。
所以我不会。
这是个判定问题,只需要回答 YES NO
。
考虑条件,必要条件是比较好找的,显然每个数出现次数为 \(k\) 的倍数是必要条件,若干个必要条件加在一起就是充要条件。
考虑同时判定若干个必要条件,即某些数的出现次数是否为 \(k\)
的倍数,似乎不太可做,但是发现如果随机选取若干个数并判定,那么对于答案为
NO
的所有情况,通过判定的概率至多为\(\frac{1}{2}\),所以随机对数个子集判定后对于通过的回答
YES
,正确率足以接受。
对于一个判定问题,如果有某种检测算法,答案为 YES
一定可以通过,答案为 NO
概率通过,那么运行这个算法对数次后,可以以很高的正确率回答该判定问题。
如果有一个判定问题,某随机算法能以超过 \(50\%\) 的概率给出正确的答案,那运行这个算法对数次取众数即可解决问题