CSU 1326:The contest(并查集+分组背包)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1326
题意:……
思路:并查集建图处理出边,然后分组背包。
之前不会分组背包,比赛的时候也推不出来,不知道互斥的情况怎么搞。原来就和01背包差不多,只不过是把每个组当作一个物品,然后枚举容量的时候,加上内层枚举组内的物品。注意第三层枚举组内物品要写在容量的内层,才能满足组内最多选一个的互斥条件。这里分析的挺好的:http://www.cppblog.com/Onway/archive/2010/08/09/122695.html。
- #include <cstdio>
- #include <algorithm>
- #include <iostream>
- #include <cstring>
- #include <string>
- #include <cmath>
- #include <queue>
- #include <vector>
- #include <map>
- #include <set>
- #include <stack>
- using namespace std;
- #define INF 0x3f3f3f3f
- #define N 1010
- typedef long long LL;
- vector<int> G[N];
- int fa[N], w[N], p[N];
- int dp[N];
- int Find(int x) { if(x == fa[x]) return x; return fa[x] = Find(fa[x]); }
- void Merge(int x, int y) { x = Find(x), y = Find(y); if(x != y) fa[x] = y; }
- int main() {
- int n, tol, k;
- while(~scanf("%d%d%d", &n, &tol, &k)) {
- for(int i = ; i <= n; i++) fa[i] = i;
- for(int i = ; i <= n; i++) G[i].clear();
- memset(dp, , sizeof(dp));
- for(int i = ; i <= n; i++) scanf("%d%d", &p[i], &w[i]);
- for(int i = ; i < k; i++) {
- int u, v; scanf("%d%d", &u, &v);
- Merge(u, v);
- }
- for(int i = ; i <= n; i++) {
- int u = Find(i);
- G[u].push_back(i);
- }
- for(int u = ; u <= n; u++) { // 枚举物品
- if(fa[u] == u) { // 相同集合的物品
- for(int i = tol; i >= ; i--) { // 相当于把这组物品当做一个物品来作DP
- for(int j = ; j < G[u].size(); j++) {
- int now = G[u][j];
- if(i - w[now] >= )
- dp[i] = max(dp[i], dp[i-w[now]] + p[now]);
- }
- }
- }
- }
- printf("%d\n", dp[tol]);
- }
- return ;
- }
CSU 1326:The contest(并查集+分组背包)的更多相关文章
- Codeforces Round #383 (Div. 2) A,B,C,D 循环节,标记,暴力,并查集+分组背包
A. Arpa’s hard exam and Mehrdad’s naive cheat time limit per test 1 second memory limit per test 256 ...
- 1326: The contest(并查集+分组背包)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1326 殷犇有很多队员.他们都认为自己是最强的,于是,一场比赛开始了~ 于是安叔主办了一场比赛,比赛 ...
- 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的情况下取得到的价值最大为多少,能对于同一个组的物品,要么全取,要么只取一个. 分析: ...
- csu 1326 The contest
裸的 并查集 + 分组背包: #include<iostream> #include<cstring> #include<algorithm> #inclu ...
- CSU 1326: The contest(分组背包)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1326 题意: n个题目,每个题目都有一个价值Pi和相对能力消耗Wi,但是有些题目因为太坑不能同时做 ...
- hdu 6795 Little W and Contest 并查集+排列组合
题意: t组输入,有n个人,刚开始谁也不认识谁.每一个人有一个权值w[i](1<=w[i]<=2),你要挑选3个互相不认识的人组成一个队,且要保证3个人权值之和大于等于5(也就意味着最少要 ...
- codevs 3372 选学霸(hash+并查集+多重背包)
先通过并查集处理出来有多少种不同的集合,每一个集合有多少人.一定要不要忘记了与别的没有联系的独立点. 并查集的时候能够通过hash处理出来每一个数目同样的集合的个数. 这样以人数为权值.个数为限制进行 ...
- CSU - 1580 NCPC2014 Outing(树形依赖+分组背包)
Outing Input Output Sample Input 4 4 1 2 3 4 Sample Output 4 分组背包: for 所有的组k for v=V..0 for 所有的i属于组k ...
随机推荐
- dumpbin判断windows程序是32还是64位(包括DLL)
http://blog.csdn.net/csfreebird/article/details/10105681 dumpbin /HEADERS gdal18.dll(or xxx.exe) 如果安 ...
- WPF 页面切换效果
原文:WPF 页面切换效果 最近做一个有页面切换的吧.. 我觉得这个功能是比较基础的吧.. 在网上百度了一下.. 用NavigationWindow的比较好.. 因为Demo中是带了淡入淡出的页面效果 ...
- StaticResource和DynamicResource
Resource 资源(Resource)是保存在可执行文件中的一种不可执行数据,用来保存一些可以被重复利用的样式,对象定义以及一些传统的资源如二进制数据,图片等等我们可以在任何元素上定义资源 Sta ...
- WPF 验证错误模板
<Window x:Class="BindingExam.MainWindow" xmlns="http://schemas.microsoft.co ...
- API Hook基本原理和实现
API Hook基本原理和实现 2009-03-14 20:09 windows系统下的编程,消息message的传递是贯穿其始终的.这个消息我们可以简单理解为一个有特定意义的整数,正如我们看过的老故 ...
- 微信小程序把玩(二十四)toast组件
原文:微信小程序把玩(二十四)toast组件 toast消息提示框,可用在提示一些信息,比如清楚缓存给用户一个友好的提示!或操作一些请求不想让用户有什么操作,toast也可以做到因为toast显示时其 ...
- volatile变量理解 via《Java并发编程实战》
第3章:对象的共享 volatile关键字的理解 volatile变量,用来确保将变量的更行操作通知到其他线程.当变量申明为volatile类型后,编译器与运行时都会注意带这个变量时共享的,因此不会将 ...
- Android零基础入门第40节:自定义ArrayAdapter
原文:Android零基础入门第40节:自定义ArrayAdapter ListView用起来还是比较简单的,也是Android应用程序中最重要的一个组件,但其他ListView可以随你所愿,能够完成 ...
- 高启全:长江存储自主3D NAND,DRAM研发欢迎美光一起加入(千秋大业,慢慢做)
台湾DRAM教父高启全转战大陆紫光集团操盘存储器大计划超过1年,日前晋升长江存储的执行董事.代行董事长,接受DIGITIMES独家专访公开未来规划:他指出,已齐聚500名研发人员在武汉投入3D NAN ...
- SSL Converter & Formats
https://www.sslshopper.com/ssl-converter.html PEM Format The PEM format is the most common format th ...