acwing提高
qq_39298729
这个作者很懒,什么都没留下…
展开
-
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 · 113 阅读 · 0 评论 -
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 · 152 阅读 · 0 评论 -
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 · 182 阅读 · 0 评论 -
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 · 115 阅读 · 0 评论 -
DP的笔记1
参考文献 y总的提高课和基础课考虑状态转移的时候我们要着重考虑”最后一步“,先考虑到最后一步将进行那些操作,对集合进行划分然后考虑不进行这最后一步的操作的倒数第二个状态是什么状态然后考虑进行了这个最后一步的操作之后倒数第二个状态将会对最后一个状态发生怎么样的变化然后将这个最后一步的操作的贡献和倒数第二个状态相加然后根据状态表示中的属性对划分出来的集合取Max/Min/数量等1)数字三角形模型##数字三角形C++ 代码#include<iostream>#include&原创 2020-10-13 22:36:51 · 2256 阅读 · 0 评论