B组只做了T2、T3、T4和T5。
T2:倒退一下即可,先把x2分解质因数,然后枚举可能的x1(x2-p+1~x2),然后再到推出x0即可。
T3:二分一下每一堆雪会在第几天完全融化。设第i堆雪会在第j天完全融化,那么这堆雪对第i~j-1天的贡献就是他们的t,对第j天的贡献就是减掉这几天以后剩余的量,那么我们可以用一颗线段树还维护一下每一天被贡献了多少次,最后答案就是t乘被贡献次数加剩余量的贡献。实际上用差分做更加简单。
T4:裸的trie。
T5:首先推几个性质:
1、B->AC->AAB->AAAC->C
C->AB->AAC->AAAB->B(这说明B与C是等价的、下面只讨论B)
2、B->AC->AB->BCB->BBB(这说明一个B可以多变出两个B)
3、A->BC->BB(这说明一个A可以变成两个B)
4、AB->AAC->AAB->AAAC->AAAB->B(这说明无论B前有多少个A,他们都可以被消掉)
由上述结论我们可以知道在B前的A对结果是没有影响的,我们只需考虑后缀的A。
而后缀的A不能变多,只能三个三个地消掉,所以SA要大于等于TA。
接着,前面的B只能增多不能减少,而且只能两个两个地增加,包括A也只能变成两个B。所以要有SB<=TB且(TB-SB)%2=0。
然后,我们便可以开始分类讨论了。
首先SB<=TB&&(TB-SB)%2==0这是一定的条件。
然后,1、若SB==TB,那么后面的A就不能化成B了,只能三个三个地消,直至相等,也就是(SA-TA)%3==0.
2、若SB!=TB
(1)若SB==0,则后面必有一个A要化成两个B,以便前面的B继续分裂,那么就要求SA>TA。
(2)若SB>0,则表示前面的B有自我分裂能力,那么只需SA>=TA即可。
总结:这题的关键就是要发现上面的性质,然后后面的分类讨论就较简单了。