2.24模拟赛总结

今天确实是打的不是很自闭的一场

但其实还是稍微有一点罚坐qwq

时间安排

7.30-8.30(不到)

T1思路+代码

8.30-9.30

思考+纠结T2

9.30-10.30

T2 T3第一档暴力

10.30-11.20(不到)

T3第二档暴力 +手捏小数据拍了一下

11.20+

罚坐

题目分析

T1

直接去 O ( n k ) O(nk) O(nk) dp显然是拿不了满分的 但我们可以从中受到一些启发

注意到 m < = 300 , w < = 300 m<=300,w<=300 m<=300,w<=300 那么 m 2 w m^2w m2w是可接受的(而且加点小优化跑不满)

考虑 f [ x ] f[x] f[x] 表示到该商店花了x元的方案数

处理出 f f f的前缀和 s s s

对于当前要加入的商店来说,设当前商店的购买额上限是x

f [ i ] = ( s [ i ] − s [ i − x − 1 ] ) f[i]=(s[i]-s[i-x-1]) f[i]=(s[i]s[ix1]) (如果i-x-1<0,那么s[i-x-1]=0)

这么做是因为,当前的 s s s是上一个商店的 f f f的前缀和

把有限制的商店做完之后,剩下的问题就是,x元分给y个人,允许有人没有分到的经典组合数问题

a n s = ∑ i = 0 k f [ i ] ∗ C ( k − i − 1 + n − m , n − m ) ans=\sum\limits_{i=0}^{k}f[i]*C(k-i-1+n-m,n-m) ans=i=0kf[i]C(ki1+nm,nm)

T2

暴力就是把一个区间的边抽出来,跑一下kruskal

考虑优化这个暴力,可以把询问离线莫队一下,因为 n < = 100 n<=100 n<=100,搞个set记录一下某两个节点之间的边,在询问的位置每两个点抽最多一条边出来,做kruskal

这玩意是 O ( m m l o g w + q n 2 l o g w ) O(m\sqrt mlogw+qn^2logw) O(mm logw+qn2logw)

给我开个10s我就能爽一爽了!(暴言)

考试的时候很快想到了,但感觉数据只要正常就过不掉,所以没写

T3

不会啊,什么东西啊,是什么优秀的搜索小技巧么

有种蜜汁直觉,感觉是可以证明答案的位置balabala,然后优秀剪枝过去

我裸写一档暴力

二档线段树乱搞

update

挂了一车分…

T1:
①因为是k-i+1-n-m,所以最大可能是2·3e5
②而且n,k,m可能不是同一个值,所以直接写2*k会挂
③n=m时可能会出现负数 要特判

T3:
n=500的时候,n^3log果然跑不掉,虽然远低于上界qwq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值