并查集+背包 【CF741B】 Arpa's weak amphitheater and Mehrdad's valuable Hoses
Descirption
有n个人,每个人都有颜值bi与体重wi。剧场的容量为W。有m条关系,xi与yi表示xi和yi是好朋友,在一个小组。 每个小组要么全部参加舞会,要么参加人数不能超过1人。 问保证总重量不超过W,剧场中的颜值最大能到多少?
Input
第一行,三个整数n,m,w
第二行,n个整数w1,w2,...,wn
第三行,n个整数b1,b2,...,bn
接下来m行,每行表示一个关系,第i行有两个整数xi和yi。
每一组朋友关系都是不同的。
Output
一行,表示最大的魅力值总和。
不错的一个题。
考察:并查集+分组背包。
我们先并查集将在一组的人处理出来.
顺便处理一下每个组的编号与组中每个人是谁.
\(belong[x]\)则代表\(x\)组的编号。
我们用\(ins[i][j]\)代表第\(i\)组的第\(j\)个元素是谁。
然后每一个小组可以全部去,可以去一个,可以不去。
考虑问题转化,我们将这一个小组看成一个物品,直接把其价值及体积加入到当前组即可。
处理完之后,跑分组背包即可。
需要注意的一点是:如果某一组只有一个元素,我们不能再将其看为一个物品重新加入(克隆?)
代码
#include<cstdio>
#include<iostream>
#include<algorithm>
#define R register
using namespace std;
const int gz=1008;
inline void in(int &x)
{
int f=1;x=0;char s=getchar();
while(!isdigit(s)){if(s=='-')f=-1;s=getchar();}
while(isdigit(s)){x=x*10+s-'0';s=getchar();}
x*=f;
}
int n,m,w,wi[gz],f[gz],b[gz],dp[gz];
int find(R int x){return f[x]==x?x:f[x]=find(f[x]);}
int belong[gz],cnt;
int ins[gz][gz],W[gz],B[gz];
int main()
{
in(n),in(m),in(w);
for(R int i=1;i<=n;i++)in(wi[i]);
for(R int i=1;i<=n;i++)in(b[i]);
for(R int i=1;i<=n;i++)f[i]=i;
for(R int i=1,x,y;i<=m;i++)
{
in(x),in(y);
R int fa=find(x);
R int fb=find(y);
if(fa==fb)continue;
f[fa]=fb;
}
for(R int i=1;i<=n;i++)
{
R int x=find(i);
if(!belong[x])belong[x]=++cnt;
ins[belong[x]][++ins[belong[x]][0]]=i;
W[belong[x]]+=wi[i];
B[belong[x]]+=b[i];
}
for(R int i=1;i<=cnt;i++)
{
if(ins[i][0]!=1)
{
ins[i][++ins[i][0]]=n+1;
wi[n+1]=W[i];
b[n+1]=B[i];
}
for(R int j=w;j>=0;j--)
for(R int k=1;k<=ins[i][0];k++)
if(j>=wi[ins[i][k]])
dp[j]=max(dp[j],dp[j-wi[ins[i][k]]]+b[ins[i][k]]);
}
printf("%d",dp[w]);
}
并查集+背包 【CF741B】 Arpa's weak amphitheater and Mehrdad's valuable Hoses的更多相关文章
- Codeforces Round #383 (Div. 2) D. Arpa's weak amphitheater and Mehrdad's valuable Hoses —— DP(01背包)
题目链接:http://codeforces.com/contest/742/problem/D D. Arpa's weak amphitheater and Mehrdad's valuable ...
- Codeforces Round #383 (Div. 2) D. Arpa's weak amphitheater and Mehrdad's valuable Hoses(分组背包+dsu)
D. Arpa's weak amphitheater and Mehrdad's valuable Hoses Problem Description: Mehrdad wants to invit ...
- B. Arpa's weak amphitheater and Mehrdad's valuable Hoses
B. Arpa's weak amphitheater and Mehrdad's valuable Hoses time limit per test 1 second memory limit p ...
- Arpa's weak amphitheater and Mehrdad's valuable Hoses
Arpa's weak amphitheater and Mehrdad's valuable Hoses time limit per test 1 second memory limit per ...
- Codeforces Round #383 (Div. 2)D. Arpa's weak amphitheater and Mehrdad's valuable Hoses(dp背包+并查集)
题目链接 :http://codeforces.com/contest/742/problem/D 题意:给你n个女人的信息重量w和美丽度b,再给你m个关系,要求邀请的女人总重量不超过w 而且如果邀请 ...
- Codeforces 741B:Arpa's weak amphitheater and Mehrdad's valuable Hoses(01背包+并查集)
http://codeforces.com/contest/741/problem/B 题意:有 n 个人,每个人有一个花费 w[i] 和价值 b[i],给出 m 条边,代表第 i 和 j 个人是一个 ...
- Codeforces 741B Arpa's weak amphitheater and Mehrdad's valuable Hoses (并查集+分组背包)
<题目链接> 题目大意: 就是有n个人,每个人都有一个体积和一个价值.这些人之间有有些人之间是朋友,所有具有朋友关系的人构成一组.现在要在这些组中至多选一个人或者这一组的人都选,在总容量为 ...
- Codeforce 741B Arpa's weak amphitheater and Mehrdad's valuable Hoses(并查集&分组背包)
题意: 给定n个价值为b 花费为w的物品, 然后某些物品是属于同一个组的, 给定一个花费限制V, 求在小于等于V的情况下取得到的价值最大为多少,能对于同一个组的物品,要么全取,要么只取一个. 分析: ...
- codeforces 742D Arpa's weak amphitheater and Mehrdad's valuable Hoses ——(01背包变形)
题意:给你若干个集合,每个集合内的物品要么选任意一个,要么所有都选,求最后在背包能容纳的范围下最大的价值. 分析:对于每个并查集,从上到下滚动维护即可,其实就是一个01背包= =. 代码如下: #in ...
随机推荐
- IHE PIX规范
IHE(Integrating Healthcare Enterprise) 集成医疗企业 IHE概念是由医学专家和广大医护工作者.相关政府部门.信息技术专家和企业共同发起的,目的是提供一种更好的方法 ...
- spring中Constructor、@Autowired、@PostConstruct的顺序【转】
其实从依赖注入的字面意思就可以知道,要将对象p注入到对象a,那么首先就必须得生成对象p与对象a,才能执行注入.所以,如果一个类A中有个成员变量p被@Autowired注解,那么@Autowired注入 ...
- BZOJ1051:受欢迎的牛(并查集 / Tarjan)
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 8161 Solved: 4460 Description ...
- sls文件
http://www.ituring.com.cn/article/42238 只是数据而已 深入学习之前,明白SLS文件只是结构化的数据而已是很有用的.看懂和编写SLS文件不需要理解这一点,但会让你 ...
- shell监控进程是否存在
1.直接给代码:我这个是两个程序.多半要写成函数 [root@java1 src]# cat checkprocess.sh #!/bin/bashcheckprocess(){ps -ef|grep ...
- 通过7zip压缩备份文件bat
for %%X in (*log20*) do "c:\Program Files\7-Zip\7z.exe" a "backups\%%X.zip" &quo ...
- 百度vue服务端渲染(ssr)有感
前端各种框架工具层次不穷,日新月异,越学越混乱了快 知乎上看到了一段回复,豁然开朗的感觉. Web 2.0时代最大的思想革命本质不是前后端分离,而是把网页当作独立的应用程序(app).前后端分离只是实 ...
- JavaScript中cookie使用
转自:http://www.cnblogs.com/yjzhu/archive/2012/11/26/2789032.html 一.什么是 cookie? cookie 就是页面用来保存信息,比如自动 ...
- Java基础学习知识体系图
- PHP文件操作函数二
PHP部分文件访问函数总结: 1.filetype("文件路径") //可以输出相关文件类型,返回之为:dir/file... 2.stat("文件名") / ...