Codeforces Round #383 (Div. 1) B
来源:互联网 发布:二十四小时软件 编辑:程序博客网 时间:2024/05/29 04:44
就是01背包问题
先用并查集再用01背包
复杂度为nw
代码如下
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<vector>using namespace std;const int maxn=1005;int dp[maxn],w[maxn],b[maxn],f[maxn];vector<int>group[maxn]; int Find(int x){if(f[x]==x)return x;return f[x]=Find(f[x]); } void unite(int x,int y){int xx=Find(x); int yy=Find(y); if(xx!=yy) f[xx]=yy;}int main(){int n,m,W;scanf("%d %d %d",&n,&m,&W);for(int i=1;i<=n;i++)scanf("%d",&w[i]);for(int i=1;i<=n;i++)scanf("%d",&b[i]);for(int i=1;i<=n;i++)f[i]=i;for(int i=0;i<m;i++){int x,y;scanf("%d %d",&x,&y);unite(x,y);}for(int i=0;i<maxn;i++)group[i].clear();for(int i=1;i<=n;i++) group[Find(i)].push_back(i);memset(dp,0,sizeof(dp));for(int i=1;i<=n;i++){if(Find(i)!=i)continue;for(int j=W;j>=0;j--){int sumw=0,sumb=0;for(int k=0;k<group[i].size();k++){sumw+=w[group[i][k]];sumb+=b[group[i][k]];if(j>=w[group[i][k]]){dp[j]=max(dp[j],dp[j-w[group[i][k]]]+b[group[i][k]]);}}if(j>=sumw)dp[j]=max(dp[j],dp[j-sumw]+sumb);}}printf("%d\n",dp[W]);return 0; }
阅读全文
0 0
- Codeforces Round #383 (Div. 1) B
- Codeforces Round #383 (Div. 2)(A+B)
- Codeforces Round #383 (Div. 2) B
- Codeforces Round #383 (Div. 2) B
- Codeforces Round #131 (Div. 1) B. Numbers
- Codeforces Round #119 (Div. 1) B. AlgoRace
- Codeforces Round #215 (Div. 1) <A-B>
- Codeforces Round #225 (Div. 1) B. Volcanoes
- Codeforces Round #230 (Div. 1)B,C
- Codeforces Round #239 (Div. 1)(A,B)
- Codeforces Round #253 (Div. 1)-A,B
- Codeforces Round #254 (Div. 1)-A,B
- Codeforces Round #240 (Div. 1)B
- Codeforces Round #259 (Div. 1) B题
- Codeforces Round #268 (Div. 1) B
- Codeforces Round #282 (Div. 1) B
- Codeforces Round #284 (Div. 1) B
- Codeforces Round #278 (Div. 1) B
- HTML的组成
- [LeetCode] 541. Reverse String II
- 带你入门mysql常用命令
- 2017年8月5日训练日记
- 每日学习前端1
- Codeforces Round #383 (Div. 1) B
- POJ 3632 Optimal Parking
- 索引知识点总结
- DK2的装机演示+疑难处理(多图)
- 如何搭建内容运营框架?
- Gym 100960B B. Forcefield
- Unix中的文件IO
- leetcode 173. Binary Search Tree Iterator
- UVa227-Puzzle