已经一个月多没写博客了,昨天考试考炸了,改完T1、T2, T3看不懂题解就这样
我的成绩
倒数第一
T1 Set
前缀和水题(我还是太菜了),
N个数前缀和有N个,在模N意义下,只可能是0,1,2,… N-1,共N种情况,当前缀和为0时,显然是1~i,
那么除去为0的情况,N个前缀和里必有两个前缀和相等,那么这一段区间和是N的倍数,输出即可
T2 Read
完全没想到可以这么做,推了半天柿子,蛮有信心的开打,结果最基本的统计不会(我就是菜鸡,我SB)
不过还是想说一下我都在忙啥(可能以后会用的着)
可以不看——————————————————————————————————
S=(1<<k)-1,形如11111111的二进制数,
&S即为% (1<<k)
A[n]=(A[n-1]*y+z)%mod
打表得递推式推着推着会出现连续的相等的数,即这各值以后都不会变了
开始推~ A[n]=((((A[1]*y+z)*y+z)*y+z)……
$ A[n]=A[1]*y^{n-1}+z*(y^{n-2}+y^{n-3}+……+y+1) $
不变的条件是A[n]==A[n+1]
$ A[n+1]-A[n]=(A[1]*y^{n}-A[1]*y^{n-1})+z*y^{n-1} =0$
由 A[1]=x 得
(x*y-x+z)*y^{n-1}%mod==0
可求出连续相等的数的第一个位置n,貌似用BSGS求,不太会(好吧,我忘了)
不过这个东西好像没啥用~
———————————————————————————————————————
正解求出数量最多的种类,在扫一遍求出该种类的个数,没了,大概就是一个简单的统计,我TM的整那么复杂还Wa0
T3 Race(好题)
对于排名为X的人会获得X^2 的积分,而他前面会有X个人,非常神奇的转换一下,这就是从比他靠前的人每选两个人加个1,
把每个数从二进制高位到低位存到trie树中,
对于一个数a[]找到与他前几个高位一样,而第i位不同的数的个数num,
对于这些数只要天数的第i位与a[]的第i位相同,那么异或完之后这些数都大于a[],那么两两组合贡献为num*num,再乘上天数 2^(m-1) (第i位与a[]相同,所以是2^(m-1))
那么还有其他的第j位不同的数的个数num2,它们和第i位不同的数同时大于a[]的天数是 2^(m-2) ,贡献$ 2^num*num_2*2^{m-2} $
统计每一个数的积分和,异或一下