摘要:
51nod 1720 祖玛 这又是一个区间 dp,但这题又和其他的不一样,这题又用记忆化搜索,但是多学一种方法也没事,但其实用搜索后就模拟即可了。 #include<bits/stdc++.h> using namespace std; // 定义全局变量 int n; // 数组长度 int dp 阅读全文
摘要:
51nod 3180 矩阵连乘 感觉区间 dp 还是要感性理解,但好像区间有套路的,这和石子合并很像,就根据题意模拟。 这个写法的区间比较巧妙,左右同时增加,相当于滑动窗口,因为一开始花费一个是0,所以注意dp的初始化。 #include<bits/stdc++.h> using namespace 阅读全文
摘要:
P1775 石子合并(弱化版) 感觉 dp 太难了,这真的感觉太难学了,但是还要写题记积累啊,唉! 感觉不用讲题意了(那你也别讲题解了)就是石子之间可以合并,合并的代价是这堆石子数,问如何合并全部石子后总代价最小。 考虑用区间 dp,设状态为 \(dp[i][j]\) 为区间 \([i,j]\) 的 阅读全文
摘要:
模板题 我写不明白我要用其他人的学习笔记 这个 其实也没法写,真要一步步写很复杂。 无非就是依次将每个数减掉系数,最后成为一个单位矩阵。 所以看注释: #include<bits/stdc++.h> using namespace std; #define ll long long const in 阅读全文
摘要:
学习笔记 最大M子段和 V1 \(N\) 个整数组成的序列 \(a[1],a[2],a[3],…,a[n]\),将这N个数划分为互不相交的 \(M\) 个子段,并且这 \(M\) 个子段的和是最大的。如果 \(M >= N\) 个数中正数的个数,那么输出所有正数的和。\(N,M<=5000\)。 例 阅读全文
摘要:
51nod 1254 最大子段和 V2 #include <bits/stdc++.h> using namespace std; #define ll long long int n; ll a[50005]; ll sum[50005]; ll lmax[50005],rmax[50005]; 阅读全文