A
异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用 表示真, 表示假,则异或的运算法则为:,,,(同为 ,异为 ),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。
假定相同位上分别是 和 , 那么在 进制下 不进位加法的结果: 取模运算 %
B
注意到 and 运算意味着取交集,or 意味着取并集,因此 and 和 or 结合后就相当于找出集合 满足: 是 的子集且 是 的子集,因此 。
据此原式即为 。
C
暴力模拟即可通过本题。
另外由于 bitset 可以快速处理类似的运算,合理利用可以简化码量。
综上本题可以有:①暴力;②bitset;③map作桶 大致三种办法,经过内测群讨论,放宽时限后都可以通过。
D
首先根据二次函数图象答案很明显是 :第一种方法是 的公式为 代入硬算,第二种方法是由于整个式子化出来可以预测是一个三次式,因此试根法可以得到最后的答案为::。
E
倒着考虑每一个位置的情况即可:对于第 个位置,分两种情况,一则从这个点开始,则战斗力必须大于等于该点;二则从它的“前”面开始,则战斗力必须满足加上前面的点后大于等于该点。后者可以转化成战斗力逐渐递减,则本题解决。
F
观察性质,可以发现第一次 M
操作之后的所有子树两边对称。
因此可能的直径只会有这两种情况:
- 以第一次
M
操作的父亲结点为根,向两头延伸到某两个最深结点。 - 整棵树从上到下拎一遍(结果钦定为 )。
最终查找第一个 M
字符的位置并列式计算即可。
Summary
E、F 两个题讲评的时候会具体讲解一些文字较难表达清楚的内容,敬请期待。
总体来讲还是思维场,如果你 C 题想不到 bitset 或者 D 题想不到试根,可能需要稍微多花一点时间。