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[i−x−1]) (如果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=0∑kf[i]∗C(k−i−1+n−m,n−m)
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(mmlogw+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循环②继承概念③全类名④方法重写