第五周动态规划

这周做些了几个题收获了挺多感觉最大的收获就是一个不严格递增和滚动数组,还有解决了cin输入流的用时较长的问题。不严格递增:不等式ai<ai+1⟺ai≤ai+1−1⟺ai−i≤ai+1−(i+1)ai<ai+1⟺ai≤ai+1−1⟺ai−i≤ai+1−(i+1)。滚动数组是用时间换空间的一种优化思想。简单的理解就是每次都使用固定的几个存储空间达到压缩节省存储空间的作用,主要应用在递推或动态规划中(背包问题,最大m字段和问题)。DP题目是一个自底向上的扩展过程,经常用到的是连续的解,前面的解经常可以舍去。所以可以用滚动数组。利用滚动数组在N很大的情况下可以实现压缩存储的作用。使用cin.tie(0);ios::sync_with_stdio(0);进行解绑操作。除了这些,还有些小收获。对于杭电那一题虽然是中文问题,它那个就是题目放在废话中本生题目不怎么难,这个让我意识到如果万一是英文题也这么搞,不是光看题就会难搞,敲响一个小警钟。还有其实如果学会降维思想的思考过程,这将会是最大的收获,但是就是对这个思想没怎么有感觉。牧场物语就是一个dp的难题,但是dp的思想非常的综合,那一题我单独写了一个博客,有思考过程,有滚动数组优化的代码,我需要努力学习那个思考过程的。这两周做了lcs,最长公共子序列,最长m字段和,最大字段和,矩阵模型的题,多维的题目。发现每个dp数组在每个题的设置都极为巧妙,每次发现不同的题的dp数组的i,j,k的什么都要恰到好处。不然要么超内存,要么超时间。设置完dp数组,难的就是,递归思想转循环写出来了。这个就是我对动态规划的目前感觉,可能感觉,不怎么对,有些肤浅,但是我相信我还会逐步加深我对它的理解。

发布了23 篇原创文章 · 获赞 0 · 访问量 326

猜你喜欢

转载自blog.csdn.net/qq_45762392/article/details/105315637