dp
Daniel__d
这个作者很懒,什么都没留下…
展开
-
POJ2778-AC自动机,矩阵快速幂优化DP
POJ2778题目描述简要题意:给出mmm个病毒串,问你由ATGCATGCATGC构成的长度为 nnn 且不包含这些病毒串的字符串有多少个?题解定义dp[i][j]=dp[当前长度为i][当前在AC自动机的第j个节点]=方案数dp[i][j]=dp[当前长度为i][当前在AC自动机的第j个节点]=方案数dp[i][j]=dp[当前长度为i][当前在AC自动机的第j个节点]=方案数.转移方程也十分简单.但是注意到nnn的大小,显然会T到飞起,考虑矩阵乘法优化,其实再转化一下题意就是:全图中的000原创 2020-07-30 13:47:32 · 207 阅读 · 0 评论 -
HDU3341-AC自动机+dp
HDU3341题目描述题解代码#include<bits/stdc++.h>//细节较多 using namespace std;int tr[505][5],val[505],fail[505],has[41][41][41][41],dp[505][15009],n,ans,tot,cnt,num[5],a[5];char s[50]; void clear(){ tot=cnt=ans=0; memset(tr,0,sizeof(tr)); memset(val,0,原创 2020-07-26 10:57:32 · 151 阅读 · 0 评论 -
P2051-线性dp
P2051题目描述题解1.第iii行什么都不放。f[i][j][k]=f[i][j][k]+f[i−1][j][k]f[i][j][k]=f[i][j][k]+f[i-1][j][k]f[i][j][k]=f[i][j][k]+f[i−1][j][k]2.放1个在空的列。空的列是m−j−km-j-km−j−k。f[i][j][k]=f[i][j][k]+f[i−1][j−1][k]×(m−(j−1)−k)f[i][j][k]=f[i][j][k]+f[i−1][j−1][k]×(m−(j−1)原创 2020-07-21 10:57:24 · 137 阅读 · 0 评论 -
AT5798-BFS+dp+思维题
AT5798题目大意题解代码#include<bits/stdc++.h>using namespace std;int read(){ int f=1,re=0; char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar()); if(ch=='-'){f=-1,ch=getchar()...原创 2020-03-29 10:25:01 · 107 阅读 · 0 评论 -
树形dp练习
树形dp练习解析题型1:树形背包 P2014题解代码#include<bits/stdc++.h>#define M 509using namespace std;int read(){ int f=1,re=0; char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar()); if(...原创 2020-03-29 10:57:29 · 166 阅读 · 0 评论 -
有依赖的背包专题
有依赖的背包问题解析T1 P1064题解代码#include<bits/stdc++.h>#define M 30009using namespace std;int read(){ int f=1,re=0; char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar()); if(ch...原创 2020-03-29 10:57:17 · 134 阅读 · 0 评论 -
背包问题的变化
背包问题的变化解析求第k优解T1 HDU2639题解代码#include<bits/stdc++.h>#define M 1009using namespace std;int read(){ int f=1,re=0; char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar());...原创 2020-03-29 10:57:06 · 185 阅读 · 0 评论 -
分组背包专题
分组背包专题解析T1 HDU1712题解代码#include<bits/stdc++.h>#define M 109using namespace std;int read(){ int f=1,re=0; char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar()); if(ch==...原创 2020-03-29 10:56:58 · 211 阅读 · 0 评论 -
二维费用背包专题
二维费用背包专题解析T1 P1507题解代码#include<bits/stdc++.h>#define M 1009using namespace std;int a[M],b[M],c[M],f[M][M],n,m,k;int main(){ scanf("%d%d%d",&n,&m,&k); for(int i=1;i<=k;i...原创 2020-03-29 10:56:46 · 172 阅读 · 0 评论 -
混合背包专题
混合背包专题解析T1 P1833题解代码#include<bits/stdc++.h>#define M 100009using namespace std;int read(){ int f=1,re=0; char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar()); if(ch=...原创 2020-03-29 10:56:37 · 156 阅读 · 0 评论 -
多重背包专题
多重背包专题解析T1 HDU2191题解代码#include<bits/stdc++.h>#define M 100009using namespace std;int read(){ int f=1,re=0; char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar()); if(c...原创 2020-03-29 10:56:23 · 129 阅读 · 0 评论 -
完全背包专题
完全背包专题解析T1 HDU1114题解代码#include<bits/stdc++.h>#define M 10009using namespace std;int read(){ int f=1,re=0; char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar()); if(ch...原创 2020-03-29 10:56:15 · 121 阅读 · 0 评论 -
01背包专题
01背包专题解析T1 HDU2602题解代码#include<bits/stdc++.h>#define M 10009using namespace std;int read(){ int f=1,re=0; char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar()); if(ch...原创 2020-03-29 10:56:08 · 133 阅读 · 0 评论 -
最佳团体-分数规划,树形背包
P4322 最佳团体题目描述题解分数规划+树形背包判断我们令dp[i][j]dp[i][j]dp[i][j]表示枚举到第iii个节点,选了jjj个人的最大值那么就可以得出转移方程:dp[i][j+k]=max(dp[i][j+k],dp[i][j]+dp[w][k])dp[i][j+k]=max(dp[i][j+k],dp[i][j]+dp[w][k])dp[i][j+k]=max(d...原创 2020-03-29 10:51:02 · 84 阅读 · 0 评论 -
仙人掌图2-仙人掌
仙人掌图2-仙人掌题目描述题解分外环内和环外分别进行dp推荐题解:https://www.cnblogs.com/chloris/p/11853320.html仙人掌推荐博客:http://immortalco.blog.uoj.ac/blog/1955代码实现#include<bits/stdc++.h>#define M 200009using namespa...原创 2020-03-29 10:47:32 · 115 阅读 · 0 评论 -
消耗战-虚树+树形dp
消耗战-虚树+树形dp题目描述题解首先考虑m=1m=1m=1,也就是只有一次询问的情况。我们考虑暴力dpdpdp设f[x]f[x]f[x]为处理完以xxx为根的树的最小代价转移分为两种情况111.断开自己与父亲的联系,代价为从根到该节点的最小值(记为minx[y],yminx[y],yminx[y],y为当前节点)222.不考虑该节点(前提是该节点不是询问点),把子树内的所有询问点...原创 2020-03-29 10:48:46 · 227 阅读 · 1 评论 -
191023-dp练习
191023-dp练习T1 洛谷 砝码称重题解代码#include<bits/stdc++.h>//背包 using namespace std;const int b[6]={1,2,3,5,10,20};int a[10],f[1001],ans;int main(){ for(int i=0;i<=5;i++) scanf("%d",&a[i...原创 2019-10-31 19:58:45 · 155 阅读 · 0 评论 -
四边形不等式优化dp专题
四边形不等式优化dp专题原创 2019-10-31 19:51:01 · 445 阅读 · 0 评论