Codeforces round338 div2

codeforces round338 div2总结

A:....
B:
英文阅读题啊...
先Dp出到每个点的最长上升序列,统计答案即可.
注意一下平时的习惯,这道题我一开始以为无所谓就搜索就t了,fst了之后才反应过来....
注意:开long long
C:
暴力跑kmp.(后缀自动机可以o(n)做).
D:
pp水爆了...
答案就是(i^c[i])连乘,c[i]为质数i在所有因子中出现的次数.
如何对于每一个i求出它的c[i]呢?
我们先枚举i的次方数j(即由几个i构成),再统计其他数的组合方式.
那么Ans[i]=(i^j)^( ((num[k]+1)连乘)(其中k不等于i)).(Ans[i]为i的贡献,num[k]为k出现的次数).
(用欧拉定理先将质数Mod fi(p)-1,即1000000006,再快速幂,就行了.(水的不行啊).)
注意这里的(num[k]+1)连乘不能先求出所有数连乘再乘上num[i]+1的逆元,因为要用欧拉定理,那怎么办呢?
记录一个前缀乘,一个后缀乘,就可以了.
E:
我们这样想,每一轮就等同于跑了一个六边形,那么每一轮的步数为6*k(k为当前轮数).
所以说1到k轮一共跑了((k)*(k+1)/2)*6步.我们可以二分求出k(注意二分的上界设大一点,当时因为这个wa了两次).
然后o(6)枚举看最后一步的状态是怎么样的(状态只有6中:左上,左,左下,右下,右,右上),每一种状态有k步.
然后不就行了吗.
(第k轮开始时,正好处于(2*k,0)这个位置).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值