摘要: 1 #include 2 using namespace std; 3 const int maxv=1000; 4 int v[7]={0,1,2,3,5,10,20},w[1005],num[7],tot,f[1005],ans; 5 int main() 6 { 7 scanf("%d%d%d%d%d%d",&num[1],&num[2],&num[3],&num[4... 阅读全文
posted @ 2019-01-24 18:45 宇興 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 1 //拓扑排序 坑点多 考验语文水平 2 #include 3 #include 4 using namespace std; 5 const int maxn=105,maxm=10005; 6 queue q; 7 struct edge{ 8 int to,dis;edge *Nex; 9 }e[maxm],*head[maxn]; 10 int top=-1;... 阅读全文
posted @ 2019-01-24 17:44 宇興 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 1 //拓扑排序求最长路 2 #include 3 #include 4 using namespace std; 5 const int INF=0x3f3f3f3f; 6 const int maxn=1505; 7 const int maxm=50005; 8 struct edge{ 9 int dis,to;edge *Nex; 10 }tmp[maxm]... 阅读全文
posted @ 2019-01-24 16:44 宇興 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 using namespace std; 3 const int maxn=5005; 4 int n,len_ans=1,ans; 5 int a[maxn],d[maxn],len[maxn],f[maxn]; 6 int search(int l,int r,int val) 7 { 8 while(l>1; 11 if(d... 阅读全文
posted @ 2019-01-24 16:38 宇興 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 1 //拓扑排序 2 #include 3 #include 4 using namespace std; 5 const int maxn=100005; 6 const int maxm=200005; 7 struct edge{ 8 int to;edge *Nex; 9 }tmp[maxm],*head[maxn]; 10 int top=-1; 11 bo... 阅读全文
posted @ 2019-01-24 16:27 宇興 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 1 //01背包 价值等于体积 求所剩最小体积 2 #include 3 using namespace std; 4 const int maxn=35; 5 const int maxv=20005; 6 int c,n,v[maxn],f[maxv]; 7 int main() 8 { 9 scanf("%d%d",&c,&n); 10 for(int ... 阅读全文
posted @ 2019-01-24 13:15 宇興 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 1 //01背包 价值等于体积 2 //该题卡常 优化:当价值(体积)已超过背包容积时直接输出背包容积 3 #include 4 using namespace std; 5 const int maxn=5005; 6 const int maxv=50005; 7 int c,n,v[maxn],f[maxv]; 8 int main() 9 { 10 scanf... 阅读全文
posted @ 2019-01-24 13:13 宇興 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 1 //01背包 求背包内物品价值超过某一定值时的最小体积 2 #include 3 using namespace std; 4 const int maxv=10005; 5 const int maxn=10005; 6 int n,v_tot,w_tot,v[maxn],w[maxn],f[maxv],sumv,bound; 7 int main() 8 { 9 ... 阅读全文
posted @ 2019-01-24 13:11 宇興 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 1 //并查集+01背包 2 //用并查集把几件物品合为一件 3 #include 4 using namespace std; 5 const int maxn=10005; 6 const int maxv=10005; 7 int n,m,v_tot,tot,v[maxn],w[maxn],dp[maxv]; 8 struct node{ 9 int fa,c... 阅读全文
posted @ 2019-01-24 13:07 宇興 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 1 //依赖关系最多2种 可以用分组背包水过 2 #include 3 using namespace std; 4 #define w first 5 #define v second 6 const int maxv=32005; 7 const int maxn=65; 8 int n,m,k,tot,f[maxv],ID[maxn]; 9 vector >d[m... 阅读全文
posted @ 2019-01-24 13:04 宇興 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 1 //分组背包 2 #include 3 using namespace std; 4 int n,m,k,tot,f[1005];//tot-组数 5 vector >d[105]; 6 int main() 7 { 8 scanf("%d%d",&m,&n); 9 for(int i=1,x,y,z;i=0;--j)//注意三层循环顺序 12 ... 阅读全文
posted @ 2019-01-24 12:59 宇興 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 1 //二维费用背包 2 #include 3 using namespace std; 4 const int maxn=55; 5 const int maxv1=405; 6 const int maxv2=405; 7 int v1[maxn],v2[maxn],w[maxn],n,v1_tot,v2_tot,f[maxv1][maxv2]; 8 int main() ... 阅读全文
posted @ 2019-01-24 12:57 宇興 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 1 //01背包 价值等于重要度乘体积 2 #include 3 using namespace std; 4 const int maxv=30005; 5 const int maxn=10005; 6 int n,m,v[maxn],w[maxn],f[maxv]; 7 int main() 8 { 9 scanf("%d%d",&m,&n); 10 f... 阅读全文
posted @ 2019-01-24 12:55 宇興 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 1 //完全背包 2 #include 3 using namespace std; 4 const int maxv=100005; 5 const int maxn=10005; 6 int n,m,v[maxn],w[maxn],f[maxv]; 7 int main() 8 { 9 scanf("%d%d",&m,&n); 10 for(int i=1... 阅读全文
posted @ 2019-01-24 12:54 宇興 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 1 //求方案数 定义状态f[i][j] 用前i件物品恰好放够体积为j的背包 方案数 2 #include 3 using namespace std; 4 const int maxm=10005; 5 const int maxn=105; 6 int n,m,v[maxn],f[maxn][maxm]; 7 int main() 8 { 9 scanf("%d%... 阅读全文
posted @ 2019-01-24 12:51 宇興 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 1 //01背包 2 #include 3 using namespace std; 4 const int maxv=1005; 5 const int maxn=105; 6 int n,v_tot,v[maxn],w[maxn],f[maxv],sumv,bound; 7 int main() 8 { 9 scanf("%d%d",&v_tot,&n); 10 ... 阅读全文
posted @ 2019-01-24 12:46 宇興 阅读(191) 评论(0) 推荐(0) 编辑