虚伪的DP练习赛!

T1
这里写图片描述

这题和数字三角形差不多。
你可以建立一张图,行代表时间,从1开始;列代表位置,从1到10.
首先你用一个a数组存那些时间点会有馅饼落下来。
然后用f数组做DP,Fi j 的最优值是由他上方,左上方,右上方,三个位置的最优值取max,再加上他本身位置上会落下的馅饼数量。
——————————————————————————分割线
T2
这里写图片描述

这题和爬楼梯相似。
我们直接用DP把10万内的所有答案都算出来就行了
因为他只能一次吃一个或吃k个,所以Fi的方法数等于Fi-1的方法数加上Fi-k的方法数。
为了避免TLE,可以使用前缀数组要维护(但是要注意算前缀数组时不能%,不然会出现负数)
——————————————————分割
T3
这里写图片描述

美味程度为ai ,能量值为bi。
由题意得,∑ai=k*∑bi,把∑符号提取可得:∑(ai-k*bi)=0;
所以我们把每件物品的体积看成ai-k*bi,价值为ai,挑选一些物品,使他们体积和为0,价值最大。
到此为止,此问题已经转化为背包问题了。
但体积会有负数,所以要偏移。
——————————————————分割

T4
我可以说我没做过吗。
这里写图片描述

这里写图片描述

直接上题解。
——————————————分割线
T5

这里写图片描述
这题一看就是区间DP。
区间DP解法都差不多。
枚举起点和长度,大的区间的最优值由小的区间的最优值传递。
这里写图片描述

——————————————————分割线

T6
这里写图片描述

这题kmp。
想next[next[i]]这样形式不断计算,知道i为0,就可以算出所有完美子串的位置(这个自己证明)
用递归算出完美子串的个数。
这里写图片描述
因为前如果个字符出现,那么前nexti个字符也必然出现。
——————————————分割线

T7
这里写图片描述
艹,我又没做过。
这里写图片描述
——————————————————分割线

T8
简单的树形DP。
有两种算法,第一种是你可以找到树的重心,尽可能让所有相连的城市都经过重心,这样更优。(草,我乱说的)
第二种方法是,对于每一条边,这条变经过的次数就是min(一边的友好城市个数,另一边的友好城市个数)。
所以两次DFS,第一次求出每条边两边友好城市个数,第二次DFS求答案。

————————————————————终结线。
题目就讲到这里了。
蒟蒻的我还有多刷题。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值