- 博客(5)
- 收藏
- 关注
原创 dp的笔记5(1坑)
1) 数位dp 度的数量 本题的 F[i][j] 数组表示在 i 个位置中选择 j 个位置填上 1 的所有方案的数量 last 表示当前已经确定的 1 的个数 F[i][j]=F[i−1][j]+F[i−1][j−1] F[i][j] = F[i - 1][j] + F[i - 1][j - 1] F[i][j]=F[i−1][j]+F[i−1][j−1] #include<iostream> #include<cstring> #include<cstdio>
2020-10-13 22:44:41
107
原创 dp的笔记4(1坑)
1) 区间dp模型 emmm…就是状态是一种区间的形式(类似于[L,R]之类的),同时一段大区间可以转化一些小区间,并且大区间和小区间之间是相互独立的,在处理完小区间之后可以回溯处理大区间。 可以用递推和记忆化搜索来解决 在用递推求解时,通常是先枚举区间是从小到大。 石子合并 emmm…将n堆石头合并成为一堆石头,通过题目可以发现通过划分不同的分界线合并方式值不一样。因为一共有n堆石头,所以最后一共有n-1条有效的划分线 emmm…然后就是y总的dp分析法 #include<iostream&g
2020-10-13 22:44:01
148
原创 DP的笔记3(2坑)
1)状态机模型 首先感谢秦大佬的分享和y总的视频课,emmm…下面纯属个人理解(我这个蒟蒻真的理解了好久,有点难顶) 1.状态机的概念:表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 大盗阿福 #include<iostream> #include<cstring> using namespace std; const int N = 1e5 + 10; int f[N], n, T; int main() { cin >> T;
2020-10-13 22:43:17
178
原创 DP的笔记2(2坑)
背包模型 01背包问题 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; const int N = 1010; int n, m, f[N][N]; int main() { cin >> n >> m; for(int i = 1; i <= n; i ++){
2020-10-13 22:38:44
111
原创 DP的笔记1
参考文献 y总的提高课和基础课 考虑状态转移的时候 我们要着重考虑”最后一步“, 先考虑到最后一步将进行那些操作,对集合进行划分 然后考虑不进行这最后一步的操作的倒数第二个状态是什么状态 然后考虑进行了这个最后一步的操作之后倒数第二个状态将会对最后一个状态发生怎么样的变化 然后将这个最后一步的操作的贡献和倒数第二个状态相加 然后根据状态表示中的属性对划分出来的集合取Max/Min/数量等 1)数字三角形模型 ##数字三角形 C++ 代码 #include<iostream> #include&
2020-10-13 22:36:51
2246
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人