动态规划(dp)入门 | 这tm才是入门动态规划的正确方式! | dfs记忆化搜索 | 全体起立!!

作者: 一只会code的小金鱼分类: 校园学习 发布时间: 2023-03-23 20:06:59 浏览:159742 次

动态规划(dp)入门 | 这tm才是入门动态规划的正确方式! | dfs记忆化搜索 | 全体起立!!

小丫嘛小怪兽:
一样大二区别好大,这就是世界的参差吗 真的很谢谢up,跟着视频看到这里学到了很多,希望4.8蓝桥杯能有点收获

【回复】回复 @鹅鹅鹅鹅鹅路口 :那次拿到省二了
【回复】佬,你学的程度怎么样,我也是广东的,现在还没搞懂动态规划,前面学的基础也不太行,现在有点慌,大概要学到怎么样的程度
小镇做题家jjf:
佬,学了你的回溯和搜索在研究生复试获得了老师的认可[脱单doge][脱单doge][脱单doge]

【回复】回复 @游四方7 :项目 算法 竞赛 你必须能拿出来一个 你说那个你熟练老师就会刨根问底地提问你细节
【回复】哈哈哈可以可以[呲牙][呲牙],说明自己听懂了也消化了[打call]
兜兜不是山河:
老师…来反馈一下…JAVA A组省二 虽然很菜 但是我写出来了dfs的那道填空题 非常感谢你… 我就看了你的dfs…

【回复】哈哈哈哈继续加油,我也加油更新了开始
【回复】回复 @兜兜不是山河 :可以看看《算法竞赛》这本书
【回复】回复 @一只会code的小金鱼 :好的!
一只会code的小金鱼:
01背包问题 的 滚动数组优化代码 #include<iostream> #include<algorithm> #include<cstring> using namespace std; const int N = 1010; int n, m; int v【N】, w【N】; int f【N】; int main() { scanf("%d %d", &n, &m); for(int i = 1; i <= n; i ++) { scanf("%d %d", &v【i】, &w【i】); } for(int i = 1; i <= n; i++) { for(int j = m; j >= v【i】; j --) { if(j >= v【i】) { f【j】 = max(f【j】, f[j - v【i】] + w【i】); } } } printf("%d\n", f【m】); return 0; }

【回复】可以想一下为什么要倒序枚举体积?[呲牙]
【回复】回复 @一只会code的小金鱼 :因为正着枚举的话是第i层的,而要求的是i - 1的[脱单doge]
【回复】回复 @一只会code的小金鱼 : 因为正序枚举更新了f【1】的值,而后面比如f【3】会用到f【1】的初始值,而f【1】已经被改过了。而倒序枚举的话只会改变后面的值,前面都是初始值,emm刚学dp,应该是这样的吧
总破碎的梦:
看到你更新了 直接关掉蓝桥官网视频课 感谢up

【回复】蓝桥官网视频课可真别听,浪费时间。都不知道从哪找来的阿狗阿猫都能上去讲
【回复】回复 @Captainfly_ :屁用没有,浪费时间,我们学校还叫我们去看
我家邪帝:
讲的挺不错的!之前不怎么会写递归,听完大盗阿福后就会写了,只是说希望能准备好了再讲课[给心心]

【回复】回复 @一只会code的小金鱼 :哈哈哈哈好的,就是我想问问第三题为什么提交到蓝桥杯官网的题会超时啊,只过百分之十的数据。。。
【回复】[笑哭][笑哭]哈哈哈,那天其实状态不太好,事堆在一起了很烦,下次一定[脱单doge]
【回复】回复 @我家邪帝 : 数据范围开对了吗?
3C晔_Mk:
看完打卡。一个周末经历了ICPC、百度之星、codeforces的比赛的拷打,已经需要狠狠沉淀了[大哭]

【回复】哈哈哈加油![奋斗][奋斗][奋斗]
凌城神:
up讲的很好,加快更新速度,生产队的驴都不敢这么歇[吃瓜] 希望up下次讲的时候能提前组织语言,因为有些地方讲得有点混乱和重复[给心心]

一只会code的小金鱼:
本节课用到的markdown课件放到简介里了~需要的自己去点击~[OK][OK]

沙漠io:
数字三角形那个题记忆化搜索会t是因为数据太毒,全是0,导致记忆化失效,把mem数组初始化为-1就能AC了

潜水鱼洛忧:
up太强啦,终于悟了一点动态规划[大哭]

沉思缅怀:
感觉DP好像选票的流程啊[笑哭]从地方到中央逐级选票最多,最后选票最最最多的一个当领导人[doge]

我想要又大又圆的月亮:
直播录播观看体验不佳,一句话重复好多次。一个点,反复切换窗口看弹幕,然后再讲一遍。。。一开始大佬的那句话还有对dp的定义是很引人入胜的,但看了20分钟实在不想看了,dfs似乎才刚要讲完。要求up重新录的话有点过分,所以放录播的时候希望up能把那些没用的部分剪掉,提高视频的知识密度。

【回复】嗯嗯,我也发现了这些问题,还是属于经验不够,得多多学习[妙啊]
总会与你散场:
up主,为什么那个背包问题中的记忆化搜索要用二维数组

【回复】视频里说过,因为边界有俩
【回复】如果我设那个数组为mem【x】为什么是错误的,up主能不能帮我看看[打call]
敲敲敲悄悄:
target【i + 1】【j + 1】 = max(target【i】【j + 1】 + map1【i】【j】, target【i】【j】 + map1【i】【j】);(map1存的数值,target是寻找的数组) 数字三角形那个题我是这样写的也对了,递归和up得的分一样是55,但是后面从上往下递推抄up的反而错了,改成这样正着写又过了(我这样写是不是有点堆排序的意思)

【回复】要清楚数组元素被更新的顺序[脱单doge]就能明白了
【回复】回复 @你_好不好 : 懂了 少看了一个括号
【回复】回复 @你_好不好 : @一只会code的小金鱼 f【i】【j】=max(f【i+1】【j】 (这里不要加上前面的g【i】【j】吗?) ,f【i+1】【j+1】+g【i】【j】)
大飞蛾阿尔卑斯:
以后会出数据结构和别的算法视频吗?真的很需要

有事就找五条悟:
看了up的算法视频之后有一种茅塞顿开的感觉

【回复】哈哈哈那就好,别忘记一键[热词系列_三连]支持下up(・∀・)
宁中NB:
upup,交流群满员了,我该怎么加入,希望能加入群聊[脱单doge][脱单doge][脱单doge],私信发up可惜没回[doge]

学习 算法 acwing DP 动态规划 蓝桥杯 一起上岸吧 icpc 一起上岸吧!

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!