目前10天算法提高课的第一章dp刷了近30道了。
始终保持着思考,而不是依赖题解。
基本上每一道题,都是一直想,不断尝试想法,直到我把自己所有的想法都毙了,了才去看的。
当遇到一种新题型,我都先不去看视频,自己思考两小时。
然后尝试自己的解法。虽然往往做不出来。
然后去看答案,思索每一步的来源。
然后再去找这样的题型,例如数位dp,从2h想1~N出现的1的个数
到十几分钟切一道。
(除了是7不是妻,确实想不来)
ac了之后去看题解。
虽然做题量不大,但胜在思考较多
现在思考的速度比以前好了很多。
这使我的进步飞快。
大概只有3~5道题是我做不出的/细节不对debug半天/不会优化
然后看题解的。
加油,朋友们,多多思考。
佬,我最近也在刷dp,你可以看一下这道题吗, cow ,为什么不能优化成一维呢
好的,正着看
试了一下,可以一维。
但是空间会爆,应该是需要其他的优化方式来优化空间
单纯的背包的话会mle和tle一个点
这个题可以先把能力值求模,然后按照这个转移方程$f(i,j)=((f(i,j)+f(i−1,j))$$\%$$mod+f(i−1,(j−cow[i]+F)$$\%$$F])$$\%$$mod$,但是我不知都为什么不能压到一维😭
欧克我大概懂了
你可以观察一下,当你加上一个数,余数会如何变化
1,不变,2增大,3减小
也就是说,一层的状态是由上一层的这三个状态转移而来
如果是一维,那么无论你从大到小还是从小到大遍历,都会影响到余数变大,变小,不变的三种情况,此时没有维度的限制,你会用这一层的j小状态,同时更新j变小,j变大的状态
你可以观察一下以前能压到一位的题目,他们的状态转移,基本上是由j,j-v而来,如果你变成一位,那么由于一个状态只能被小于等于他的状态更新,所以可以从大到小遍历,保证小状态用的是上一层的,而此题,是能被大状态,小状态影响,所以不能一位
好嘞,我去琢磨琢磨