【题解】Wannafly挑战赛4
T1 解方程
枚举a 和b,那么 c 唯一确定,用数组或者map 判断一下这样子的c 是否存在。
T2 小AA的数列
按位(二进制的位)考虑每位对于答案的贡献。令表示前
个元素里 第
位为
的数字个数的奇偶性。考虑数列中第
个元素为区间右端点,对于 第
位,我们只要求出
中有多少个元素与
不相等且 区间长度为偶数就可以了,而这可以用一个前缀和
搞定。
ans
其中第一维表示考虑第位,第二维表示考虑的前缀和的位置,第三维表 示前缀里第bit位为1的数字个数的奇偶数,第四维用来满足长度为偶数的要求。
T3 割草机
首先把最后的那些全是空地的行去掉(因为割草机去这些行是完全没有意义 的)。
问题其实等同于割草机在什么位置选择进入下一行。令表示第
行最右的杂草的位置,
表示第
行最左的杂草的位置。 简单来说,如果当前行i 为奇数行,那么我们会选取
的位置,偶数行选取
的位置。 没有杂草的行特别处理一下。模拟一下就可以了。
T4 树的距离
首先求出个点的dfs 序,一棵子树
对应了dfs 序中的连续一段
。我们把所有点按它到根的距离dist 排序。 然后把每组询问
按
排序。
T5 方程的解
如果,那么就把
和
分别带进去试一试就好。 如果
,那么
是奇质数,就可以把方程化成
的形式,其中
。(注意
在模意义下是乘以
的逆元)这样的话就变成了检验
在模
意义下是否有二次剩余。 首先特判掉
的情况,这个是显然有唯一解的。之后如果有二次剩余,那么一定可以把
写成
的形式,其中
是
的一个原根,这样的话
肯定满足:
。相反,如果没有二次剩余,设
,那么
必然是奇数, 所以
也不会是
的倍数,
也不等于
,而会等于
。综上,我们就只需要看
是否等于
就可以判断
是否有二次剩余了。若
有二次剩余,即
,则原方程有解,否则就无解。