先说说这一周的感想吧,第一感觉就是时间紧任务重难度大,可能是我对区间DP的把握程度太低,这一周连课上学习的例题都没有很完全的把握,军训期间也只能抽时间重新去理解课件上的例题,当然简单的DP例题,尤其是老师讲过的内容还是可以找到思路的。这周最大的收获可能就是可以比较快速和准确的别人的代码,而且在看别人的代码时,有时也会突发奇想的想到一些属于自己的解题思路,这可能是我这周最大的收获了。五一假期回家,也会有一个更加安静的坏境,一定会趁这个机会,努力再进步一把。
区间DP
主观感觉上,区间DP要比线性DP简单一点,两者一般都是从开始端和结束段开始思考,并遍历所有的可能性,找到其中的解。而两者的区别大概在于区间DP的开始端和结束端都不是固定的,如石子合并问题;而线性DP问题对子问题分解时,多是一端固定另一端变化。区间DP的模式和套路相对来说要更明显一些:
memset(dp, 0x3f, sizeof(dp));
for (int i = 1; i <= n; i++) //区间长度为1的初始化
dp[i][i] = 0;
for (int len = 2; len <= n; len++) //枚举区间长度
{
for (int i = 1, j = len; j <= n; i++, j++) //区间[i,j]
{
//DP方程实现
}
}
但并不是所有题都是简单的模板化问题,有的题实在是看不出任何思路,一看题解,有些小技巧却又简单的很,我想主要原因还是自己看的太少,懂得太少,花的时间太少,下一步一定会在ACM的学习上付出更多的精力。
另外,最近发现把STL的内容完全搁置了,看看会,用起来却毫无想法,白白的浪费了大量的时间学习STL,下一步可能会更努力的使用一下STL,简化问题的同时,也尽量不要把学过的知识白白浪费。
背包问题暂时还有掌握到什么,对这类题目还没有什么主动的想法,等差不多有点主动的想法以后再进行补充。