【luogu1455】搭配购买

传送门

每个联通块看成一个整体,然后做个背包就好啦。

 1 #include<cstdio>
 2 #define N 10001
 3 #define repu(i,x,y) for(i=x;i<=y;i++)
 4 #define max(a,b) (a>b?a:b)
 5 struct edge{
 6     int v;
 7     edge *next;
 8 }e[N],*tp=e,*first[N];
 9 int d[N],c[N],w[N],sc[N],sw[N],f[N],x=0;
10 void add(int u,int v) {
11     *tp=(edge){v,first[u]}; first[u]=tp++;
12     *tp=(edge){u,first[v]}; first[v]=tp++;
13 }
14 void dfs(int u,int fa) {
15     d[u]=x; sc[x]+=c[u]; sw[x]+=w[u];
16     for (edge *i=first[u];i;i=i->next) {
17         int v=i->v;
18         if (v!=fa) dfs(v,u);
19     }
20 }
21 int main() {
22     int i,j,n,m,u,v,W,ans=0; scanf("%d%d%d",&n,&m,&W);
23     repu(i,1,n) scanf("%d%d",&c[i],&w[i]);
24     repu(i,1,m) scanf("%d%d",&u,&v),add(u,v);
25     repu(i,1,n)
26         if (!d[i]) ++x,dfs(i,0);
27     repu(i,1,x)
28         for (j=W;j>=0;j--) if (j-sc[i]>=0)
29             f[j]=max(f[j],f[j-sc[i]]+sw[i]),ans=max(ans,f[j]);
30     printf("%d\n",ans);
31 }

时间: 2024-08-24 18:00:40

【luogu1455】搭配购买的相关文章

洛谷1455 搭配购买(并查集)

洛谷1455 搭配购买 本题地址:http://www.luogu.org/problem/show?pid=1455 题目描述 明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某个网站上有卖云朵的,小朋友们决定一同前往去看看这种神奇的商品,这个店里有n朵云,云朵已经被老板编号为1,2,3,……,n,并且每朵云都有一个价值,但是商店的老板是个很奇怪的人,他会告诉你一些云朵要搭配起来买才卖,也就是说买一朵云则与这朵云有搭配的云都要买,电脑组的你觉

搭配购买

洛谷P1455 搭配购买 把需要一起购买的物品放到并查集里,每一个并查集的标志是根节点,把v和w都累加,然后对根节点做01背包. #include<bits/stdc++.h> using namespace std; int dad[10001],f[10001],v[10001],bag,w[10001]; int n,m; int ans; int getfather(int x) { if(dad[x]==x) return x; dad[x]=getfather(dad[x]); r

洛谷P1455 搭配购买

题目描述 明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某个网站上有卖云朵的,小朋友们决定一同前往去看看这种神奇的商品,这个店里有n朵云,云朵已经被老板编号为1,2,3,--,n,并且每朵云都有一个价值,但是商店的老板是个很奇怪的人,他会告诉你一些云朵要搭配起来买才卖,也就是说买一朵云则与这朵云有搭配的云都要买,电脑组的你觉得这礼物实在是太新奇了,但是你的钱是有限的,所以你肯定是想用现有的钱买到尽量多价值的云. 输入输出格式 输入格式: 第1

洛谷——P1455 搭配购买

https://www.luogu.org/problem/show?pid=1455 题目描述 明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某个网站上有卖云朵的,小朋友们决定一同前往去看看这种神奇的商品,这个店里有n朵云,云朵已经被老板编号为1,2,3,……,n,并且每朵云都有一个价值,但是商店的老板是个很奇怪的人,他会告诉你一些云朵要搭配起来买才卖,也就是说买一朵云则与这朵云有搭配的云都要买,电脑组的你觉得这礼物实在是太新奇了,但是你的

【luogu P1455 搭配购买】 题解

题目链接:https://www.luogu.org/problemnew/show/P1455 一句话题目做法:并查集合并+01背包 启示:要每次再find一遍.路径压缩会快.因为合并的时候如果是1连3,3连2,4连2,最后也不能保证一步就能连到fa上去. 结果会是fa[2] = fa[3] = fa[4] = 2. fa[1] = 3. 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm>

P1455 搭配购买

#include<bits/stdc++.h>using namespace std;int n,m,w,f[10005],money[10005],v[10005],ans(0),dp[10005],used[10005],k(0);int ww[10005],mm[10005];int find(int x){ if(f[x]==x)return x; return find(f[x]);}void UN(int x,int y){ int a=find(x); int b=find(y)

数据库技术的发展简史

http://blog.csdn.net/willtongji/article/details/52874627 学习大数据,需要知道"传统"的数据管理技术,了解了数据库管理技术的发展简史,你就知道哪些技术在大数据时代任然有用,以及新技术到底新在哪里~ 数据库系统的研究和开发从20世纪60年代中期开始到现在,几十年过去了,经历三代演变,取得了十分辉煌的成就:造就了C.W. Bachman(巴克曼).E.F.Codd(考特)和J. Gray(格雷)三位图灵奖得主:发展了以数据建模和数据库

【ZNDS众测】i6 双响炮蓝牙音箱-小黄人上线

娱乐双响炮蓝牙音箱在欣喜中收到,本次吸引我的是双响两个字,比较有可玩性,蓝牙音箱现在已经在市场上比较常见,基本走在挖掘新的市场,比如家庭影音,娱乐,户外等等场景,都在主打细分市场,这次双响蓝牙音箱我个人觉得在携带性与创新方面很好,蓝牙一托儿功能作为主打项,场景应用很加分,户外有手带可以带出去玩,室内现在的笔记本,平板,手机等都有蓝牙,在使用过程中,立体环绕音效绝对是生活的添加剂,接下来就看看本次产品的情况: 产品包装: 收到产品外包装做的相对比较细腻,盒子不大,文字与图案排版都比较简单明确,符合

浴谷夏令营题单

这是群里一位神犇整理的,我只负责将它们做完. 一.暴力.搜索Luogu 1588 丢失的牛Luogu 1463 [SDOI2005]反素数antBzoj 1085 [SCOI2005]骑士精神Luogu 1019 单词接龙Luogu 1078 文化之旅Luogu 1312 Mayan游戏Luogu 3823 蚯蚓排队Codeforces 444B Codeforces 555DLuogu 1979 华容道 二.初等数论Poj 3292 H合成数Luogu 1890 gcd区间Luogu 1029