2.24模拟赛总结

Posted Flame♡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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^kf[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

以上是关于2.24模拟赛总结的主要内容,如果未能解决你的问题,请参考以下文章

2.24 Java基础总结 ①for-each循环②继承概念③全类名④方法重写

2.24 Java基础总结 ①访问权限②static③静态方法④实例初始化块⑤静态初始化块

6.11模拟赛总结

7.15模拟赛总结

7.25模拟赛总结

7.25模拟赛总结