提高组模拟赛总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了提高组模拟赛总结相关的知识,希望对你有一定的参考价值。
T1:
题意:给定一个01背包,求将背包装到不能再放任何剩余物品的方案数
做法:部分分 F[j][k]表示前i个物品分配j空间,最小没有使用的物品为k的方案数 F[j][k] = Max(F[j-w[i]][k] + a[i], F[j][k])
实际上并不需要枚举k,显然物品越重其前面必选的物品就越多,能提供的决策就越少,考虑对物品从大到小排序,此时如果取了第i个物品,i+1 .. n必然要被选择到,如果此时剩下的钱刚好放不下i且放得下 i - 1,那就说明 i 就是没有使用的最小的物品,可以更新答案,奥妙zhonzhon
T2:
考试的时候zzy发了个QQ和我说是DD题,我一开始没有想出来,后来发现就是写个暴力,跑个表,然后找规律就A了,没什么意义我就不写了,貌似最后的规律是 n-m+1/n+1
T3:
数位DP什么的最不擅长了,这种东西知道他是数位DP就是推不出来,于是我就放solution吧,什么时候再学习一个
首先问题变成f(b)-f(a-1)
所以只考虑f(R)
如果一个门票的位数小于R
可以从高位往低位开始考虑,如果当前这一位填的数小于原位置的数那么后面填法任意。
如果总位数为奇数,中间一位同样考虑。
考虑后半部分,同样考虑,如果当前这一位的数跟前面对应的数字已经相同,后面的位数就
不需要考虑了。
比如12341421,
考虑到倒数第2位的时候,因为和第2位相等,所以前缀为1234142的数是不可能成为lucky number
的。
这样算,复杂度大约为位数的平方。
以上是关于提高组模拟赛总结的主要内容,如果未能解决你的问题,请参考以下文章