随笔分类 -  DP

摘要:书上好多题没补 PS.整个DP是根据Q来划分的,dalao的代码就是不一样啊 C++ include define rep(i,j,k) for(int i=j;i T; while(T ){ cin P Q; rep(i,1,Q) cin A[i];A[Q+1]=P+1; memset(dp,0, 阅读全文
posted @ 2018-01-16 12:27 Caturra 阅读(136) 评论(0) 推荐(0)
摘要:方程很简单,每一公里往上推就行 WA了2发,忘了单通道时的特判,还有n m傻傻分不清,忘了fixed什么的我好弱啊QAQ.. C++ include define rep(i,j,k) for(int i=j;i vec[1003]; int n,m,p,k,a,b; int main(){ ios 阅读全文
posted @ 2018-01-16 01:27 Caturra 阅读(184) 评论(0) 推荐(0)
摘要:每层至少一个,滚动时要判上一层非法与否,所以每次都要memset C++ include define rep(i,j,k) for(int i=j;i=k;i ) define scan(a) scanf("%d",&a) using namespace std; const int maxn = 阅读全文
posted @ 2018-01-15 13:17 Caturra 阅读(125) 评论(0) 推荐(0)
摘要:T了两发,DP方程很简单粗暴 dp[i][j][k]:用前i物品使得容量分别为j和k的背包恰好装满 背包的调用只需一次即可,第一次T就是每次check都丧心病狂地背包一次 对于sum的枚举,其实i j枚举到sum/2就可以了 阅读全文
posted @ 2018-01-14 13:23 Caturra 阅读(115) 评论(0) 推荐(0)
摘要:```C++ include include include include define rep(i,j,k) for(int i = j; i n m){ rep(i,1,n)rep(j,1,m)cin a[i][j]; memset(dp,0,sizeof dp); rep(i,1,n)dp[ 阅读全文
posted @ 2017-12-12 16:20 Caturra 阅读(124) 评论(0) 推荐(0)
摘要:迭代式不知道怎么敲 DFS就很清晰 C++ include include include include include include define rep(i,j,k) for(int i = j; i =1&&i=1&&jG[i][j]) maxlen=max(maxlen,DP(x,y)+ 阅读全文
posted @ 2017-12-12 14:52 Caturra 阅读(115) 评论(0) 推荐(0)
摘要:要求max{F/P},先枚举下界lowf,再贪心求符合约束条件的n个最小价值和 记录F的离散值和去重可以大幅度常数优化 (本来想着用DP做的) (辣鸡POJ连auto都Complie Error) DP写法 因为二维的dp[][k]是滚动更新的,所以每次更新当前最小值是dp[i 1][k]必然存在最 阅读全文
posted @ 2017-12-12 00:32 Caturra 阅读(132) 评论(0) 推荐(0)
摘要:f[i][j]:i种花放j盆的方案数 C++ include using namespace std; const int maxn = 3e2+11; const int mod = 1000007; typedef long long ll; ll f[maxn][maxn],a[maxn],n 阅读全文
posted @ 2017-12-11 18:39 Caturra 阅读(160) 评论(0) 推荐(0)
摘要:从来不会DP的家伙终于要开始重拾DP了 最大子矩阵没啥好说的,注意单调最大子矩阵不用这么高复杂度,另行更新 阅读全文
posted @ 2017-12-11 01:26 Caturra 阅读(119) 评论(0) 推荐(0)