这轮的三道题目比较有水准,充分反映了Tc的前沿水平。
D1 250p UnluckyIntervals
首先计算得到以下公式:
UnluckyNumber = ( K - LuckySet[left] ) * ( luckySet[right] - K ) - 1
然后建立pair < long long, int > 代表UnluckyNumber 和K。
由于题目要求只需要N个(N=100),因此对每个间隔枚举100个,排序,前N个就是解。
D1 500p EndlessStringMachine
很好的一道分形题,在2区中酿成了32sub/0ac的灭团惨案。
首先要确定,当s超过一定数量时,后面的迭代没有任何意义:因为他们远远超出了max和min的值。不确定这点,此题根本无法完成……
由于max和min之间只有100个字符,可以考虑逐个求解。
分形题的关键是如何划分层次,从而从最外层确定到最内层。
如$xy$z,$=ab,s=3的例子
最终字符串为
abxyabzxyabxyabzz
如何确定8位的y?(以开头a为0位)
我们可以在$前后分层 abxyabz | xy | abxyabz | z 。这是最外的第三层分割方案。abxyabz的长度可以预先算出F(2)=7,8 = 7 - 1 +2,因此落在$xy$z的2位。
假如是确定10位的b,同样观察abxyabz | xy | abxyabz | z。
最外层的第二个$从9位到15位,10 - 7 - 2 = 1因此进入下层递归函数,求abxyabz的1位。