随笔分类 - 动态规划
摘要:题意 解析 前缀和水题,就是在所有长度为k的区间里找个最小的。 代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 2e5 + 10,M = 1e6 + 10; int n,m,a[N
阅读全文
摘要:题意 解析 纯暴力枚举,先计算总1数。第一维枚举左端点,第二维枚举右端点,第三维从左端点跑到右端点计算当前区间如果原来是1则减1,原来是0则加1。 前缀和优化。一个翻转是1-a[x],区间反转就是这个区间长度-区间和,然后加上剩余的区间和即可。 区间DP。f[i][j]代表的是将i~j这段反转后的最
阅读全文
摘要:题意 解析 前缀和思想。 f[i]用来代表到第i+1位有多少个满足s[k] == s[k+1] 所以题目求从l~r,即求f[r-1] - f[l-1] 代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; cons
阅读全文
摘要:题意 最后要形成形如前面从1~k范围内全为负数,从k+1~n范围内全为正数,没有0的存在, 那此时最少应该改变几个值。 解析 ca[i]统计前面到i一共有多少个>=0的,cb[i]代表后面到i一共有多少个<=0的 划分分界点k,求最小的ca[k] + cb[k+1]。 代码 #include<bit
阅读全文
摘要:题意 解析 3个物品的完全背包。f[i][j]代表选到第i件物品此时恰凑成长度j的数量的最大值 代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 4000 + 10,M = 1e6
阅读全文