18-10-23学校模拟赛
orz djq
第一题
101是4位循环的
因为9999是101的倍数
10000=1(mod 101)
满足gcd(x,10)=1的数都有这样的循环
因为10^phi(x)=1(mod x)
最小的循环要枚举phi(x)的因数
求phi(x)是根号的(直接暴力从2到sqrt,每个地方都不停的除即可

本题dp[i][j][p][q]表示区间[i,j]内模101为p位数模4为q的子序列个数
注意初始情况,长度为1和有两个相同的为1
转移要小小的容斥一下
dp[i][j][p][q]+=dp[i+1][j][p][q]+dp[i][j-1][p][q]-dp[i+1][j-1][p][q]
还是有点弱啊(初始情况和转移容斥)

第二题
不考虑是x的多少倍
只考虑它是x的倍数
那就按模x的值来搞
连边变成01bfs

01bfs暑假zr讲了啊(可是我没听啊
连0的边就加到队头
连1的边就加到队尾
队列时刻都不会超过2种值(x和x+1或者只有x)
每个点最多入队两次(先1再0的情况)
且永远是用最小值先来更新
可以不用记录出现最小值的vis数组(类似dijk的vis)

第三题
维护树上并查集
不知道为什么80.。
LL写成int
把变量改成LL以后要查全文!!