SRM 438

这轮的三道题目比较有水准,充分反映了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位。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值