CodeChef补题计划

已完成2题。


1.CHSGMNTS : https://www.codechef.com/problems/CHSGMNTS

题意:N=1000,a[i] < 1e9, 计数有多少对区间( [L1, R1], [L2, R2] )  满足没有一个数x同时存在于[L1, R1], [L2, R2]。

O(n * n) :把相同的数建立链表,且前驱pre[i], 对第一个区间 for(L1 1 ~ n) for(R1 n ~ 1) 遍历, 对于pre[R1] < L1,说明a[R1]不在[L1, R1]内,所以把a[R1]这个链表中的所有数都标记可行,同时纪录可行块的大小,每次更新块的大小sz,就可以更新答案ans += sz * (sz + 1) / 2。


2.CHSQARR :  https://www.codechef.com/problems/CHSQARR

题意:N,M < 1000 的矩阵, 询问小于50组,每个操作可以让矩阵的一个数add 1,query(n, m)询问最少可以用多少次操作让矩阵存在某个(n, m)大小的子矩阵的值全都相等。

O(n * m * 50) :主要是查询每个(n , m)子矩阵的最大值是多少, 单调队列可以查询每个连续的一维的区间的最大值,同理先处理掉一维,这样用单调队列就可以处理出所有子矩阵中的数的最大值是多少了。


 POLYEVAL:https://www.codechef.com/JULY16/problems/POLYEVAL/

题意: n<1000阶的多项式,Q = 2e5个询问,每次询问一个xi < 786433, 输出多项式的值mod 786433

神题,知道解法,NTT,复杂度O(n*logn*logn),参见这篇<<多项式多点求值>> http://blog.miskcoo.com/2015/05/polynomial-multipoint-eval-and-interpolation

附上一份代码:https://www.codechef.com/viewsolution/10703571。

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值