AcWing1252. 搭配购买 (并查集+01背包)

AcWing1252. 搭配购买

思路

先分组 再做01背包


Joe觉得云朵很美,决定去山上的商店买一些云朵。

商店里有 n 朵云,云朵被编号为 1,2,…,n,并且每朵云都有一个价值。

但是商店老板跟他说,一些云朵要搭配来买才好,所以买一朵云则与这朵云有搭配的云都要买。

但是Joe的钱有限,所以他希望买的价值越多越好。

输入格式

第 1 行包含三个整数 n,m,w表示有 n 朵云,m 个搭配,Joe有 w 的钱。

第 2∼n+1行,每行两个整数 c i c_{i} ci d i d_{i} di 表示 i 朵云的价钱和价值。

第 n+2∼n+1+m行,每行两个整数 u i u_{i} ui v i v_{i} vi表示买 u i u_{i} ui 就必须买 v i v_{i} vi,同理,如果买 v i v_{i} vi 就必须买 u i u_{i} ui

输出格式

一行,表示可以获得的最大价值。

数据范围

1 ≤ n ≤ 10000 1≤n≤10000 1n10000
0 ≤ m ≤ 5000 0≤m≤5000 0m5000
1 ≤ w ≤ 10000 1≤w≤10000 1w10000
1 ≤ c i ≤ 5000 1≤ci≤5000 1ci5000
1 ≤ d i ≤ 100 1≤di≤100 1di100
1 ≤ u i , v i ≤ n 1≤ui,vi≤n 1ui,vin

代码

#include<iostream>
#include<cstdio>
#include<queue>
#include<string>
#include<cstring>
#include<map>
#include<vector>
#include<set>
#include<stack>
#include<algorithm>
#include<vector>
#include<utility>
#include<deque>
#define INF 0x3f3f3f3f
#define mod 1000000007
#define endl '\n'
#define eps 1e-6
inline int gcd(int a, int b) {
    return b ? gcd(b, a % b) : a; }
inline int lowbit(int x) {
    return x & -x; }


using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PII;
const int N = 10010;
int f[N], p[N], v[N], w[N];
int n, m, val;

int Find(int x) {
   
	return x == p[x] ? x : p[x] = Find(p[x]);
}


int main() {
   
	cin >> n >> m >> val;
	for (int i = 1;i <= n;++i)p[i] = i;
	for (int i = 1; i <= n;++i) {
   
		cin >> v[i] >> w[i];
	}

	while (m--) {
   
		int a, b;
		cin >> a >> b;
		int pa = Find(a);
		int pb = Find(b);

		if (pa != pb) {
   
			v[pb] += v[pa];
			w[pb] += w[pa];
			p[pa] = p[pb];
		}
	}
	for (int i = 1;i <= n;++i) {
   
		if (p[i] == i) {
   
			for (int j = val;j >= v[i];--j)
				f[j] = max(f[j], f[j - v[i]] + w[i]);
		}
	}
	cout << f[val] << endl;

	return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
01-17 11:44
你在各大软件投了一份又一份,你打招呼的hr一个接一个,但是只要你投过的,很快就下线了,没关系你的能量是很强,你看过的岗位招到人的速度都增加了。朋友们一个个拿着丰厚的实习回报,你却默默在家刷新邮箱,等待着那寥寥无几的面试通知。你每天一睁眼就狂投简历,你一有面试邀约就点确认。过年亲戚们围坐聊天,谈论着他们孩子的职场成就,你试图插话说自己面试过的公司数量,但他们显然不太感兴趣。你在心里自嘲,觉得他们不懂面试的艰辛、不懂得每一次面试机会的珍贵,不懂得一张张精心准备的简历背后的努力。笑你那个小侄子只会在网上刷刷职位,而你已经是各大招聘网站的常客。亲戚们夸赞自己孩子一年的成就,儿子的新工作,女儿的晋升,而...
龚新化:这帖删了呗,这跟我朋友有点相似,不过我是无所谓的😀,没什么感觉,我不轻易破防的,但是我一个朋友可能有点汗流浃背了😕,他不太舒服想睡了,当然不是我哈,我一直都是行的,以一个旁观者的心态看吧,也不至于破防吧😃,就是想照顾下我朋友的感受,他有点破防了,还是建议删了吧😯,当然删不删随你,因为我是没感觉的,就是为朋友感到不平罢了🥺
点赞 评论 收藏
分享
秋招之BrianGriffin:你再跟他说华为工资也低(相对互联网)就可以享受私信爆炸了😋
点赞 评论 收藏
分享
昨天 16:54
郑州大学 Java
下一个更好呗:感觉小厂注重你做了什么,大厂注重你没做什么,欠缺什么。
投递字节跳动等公司8个岗位 >
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务