洛谷 P1455 搭配购买
题目描述
明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某个网站上有卖云朵的,小朋友们决定一同前往去看看这种神奇的商品,这个店里有n朵云,云朵已经被老板编号为1,2,3,……,n,并且每朵云都有一个价值,但是商店的老板是个很奇怪的人,他会告诉你一些云朵要搭配起来买才卖,也就是说买一朵云则与这朵云有搭配的云都要买,电脑组的你觉得这礼物实在是太新奇了,但是你的钱是有限的,所以你肯定是想用现有的钱买到尽量多价值的云。
输入输出格式
输入格式:
第1行n,m,w,表示n朵云,m个搭配和你现有的钱的数目
第2行至n+1行,每行ci,di表示i朵云的价钱和价值
第n+2至n+1+m ,每行ui,vi表示买ui就必须买vi,同理,如果买vi就必须买ui
输出格式:
一行,表示可以获得的最大价值
输入输出样例
5 3 10
3 10
3 10
3 10
5 100
10 1
1 3
3 2
4 2
1
说明
30%的数据满足:n<=100
50%的数据满足:n<=1000;m<=100;w<=1000;
100%的数据满足:n<=10000;0<=m<=5000;w<=10000.
Tarjan缩点+背包dp
(偷笑)一遍过~
#include <ctype.h>
#include <cstdio>
#define N 5005 void read(int &x)
{
x=;
char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) {x=x*+ch-'';ch=getchar();}
}
struct node
{
int next,to;
}edge[N<<];
struct nodE
{
int c,d;
}cloud[N<<];
bool vis[N<<];
int f[N<<],value[N<<],price[N<<],tim,low[N<<],dfn[N<<],top,head[N<<],stack[N<<],sumcol,col[N<<],cnt,n,m,w;
void add(int u,int v)
{
edge[++cnt].next=head[u];
edge[cnt].to=v;
head[u]=cnt;
}
int max(int a,int b)
{
return a>b?a:b;
}
int min(int a,int b)
{
return a>b?b:a;
}
void dfs(int x)
{
stack[++top]=x;
vis[x]=;
low[x]=dfn[x]=++tim;
for(int i=head[x];i;i=edge[i].next)
{
if(!vis[edge[i].to])
{
dfs(edge[i].to);
low[x]=min(low[x],dfn[edge[i].to]);
}
else low[x]=min(low[x],low[edge[i].to]);
}
if(low[x]==dfn[x])
{
sumcol++;
col[x]=sumcol;
while(stack[top]!=x)
col[stack[top--]]=sumcol;
}
}
int main()
{
read(n);read(m);read(w);
for(int i=;i<=n;i++)
read(cloud[i].c),read(cloud[i].d);
for(int u,v;m--;)
{
read(u);
read(v);
add(u,v);
add(v,u);
}
for(int i=;i<=n;i++) if(!vis[i]) dfs(i);
for(int i=;i<=n;i++)
price[col[i]]+=cloud[i].c,value[col[i]]+=cloud[i].d;
for(int i=;i<=sumcol;i++)
{
for(int j=w;j>=price[i];j--)
f[j]=max(f[j],f[j-price[i]]+value[i]);
}
printf("%d",f[w]);
return ;
}
洛谷 P1455 搭配购买的更多相关文章
- 洛谷P1455 搭配购买
题目描述 明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某个网站上有卖云朵的,小朋友们决定一同前往去看看这种神奇的商品,这个店里有n朵云,云朵已经 ...
- 洛谷——P1455 搭配购买
https://www.luogu.org/problem/show?pid=1455 题目描述 明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某 ...
- 洛谷P1455搭配购买
传送门啦 这是强连通分量与背包的例题 需要注意的就是价值和价格两个数组不要打反了.. 另外 这是双向图!!! #include <iostream> #include <cstdio ...
- P1455 搭配购买
洛谷——P1455 搭配购买 题目描述 明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某个网站上有卖云朵的,小朋友们决定一同前往去看看这种神奇的商 ...
- 洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II
洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II https://www.luogu.org/problemnew/show/P2616 题目描述 Farmer ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 【luogu P1455 搭配购买】 题解
题目链接:https://www.luogu.org/problemnew/show/P1455 一句话题目做法:并查集合并+01背包 启示:要每次再find一遍.路径压缩会快.因为合并的时候如果是1 ...
- P1455 搭配购买 (并查集+01背包)
[题目描述] 明天就是母亲节了,电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢?听说在某个网站上有卖云朵的,小朋友们决定一同前往去看看这种神奇的商品,这个店里有n朵云,云朵 ...
- 洛谷P1108 低价购买
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
随机推荐
- 西门子PLC存储器、地址区
S7-1500 CPU的存储器 1.内部集成的存储器:工作存储器,保持性存储器,系统存储器 2.外插的SIMATIC存储卡:装载存储器去 装载存储器:断电信息不丢失,主要存储项目中程序块,数据块,工艺 ...
- TCP连接、释放及HTTPS连接流程
一.建立连接是三次握手 为什么三次握手?前两次握手为了确认服务端能正常收到客户端的请求并愿意应答,后两次握手是为了确认客户端能正常收到服务端的请求并愿意应答.三次握手可以避免意外建立错误连接而导致浪费 ...
- CTR预估经典模型总结
计算广告领域中数据特点: 1 正负样本不平衡 2 大量id类特征,高维,多领域(一个类别型特征就是一个field,比如上面的Weekday.Gender.City这是三个field),稀疏 ...
- Oracle UNDO Tablespace size & Table Size
Table Space Query select SEGMENT_NAME,bytes/1024/1024,a.* from dba_segments a UNDO Table Space Size ...
- JAVA基础--流程控制语句02
JAVA流程控制语句 一.程序流程 定义:只代码执行的先后顺序 种类 顺序流程:程序默认流程,按照书写顺序执行 选择流程:选择语句 判断语句 重复流程: 循环控制语句 二.选择流程控制语句 判断语句 ...
- 洛谷 - P2887 - 防晒霜Sunscreen - 贪心
https://www.luogu.org/problemnew/show/P2887 感觉可以: 把防晒霜拆点限制流量为瓶数,奶牛拆点限制流量为1,当某个防晒霜与奶牛匹配时连一条边,求最大流.但是这 ...
- 洛谷 - P1115 - 最大子段和 - 简单dp
https://www.luogu.org/problemnew/show/P1115 简单到不想说……dp[i]表示以i为结尾的最大连续和的值. 那么答案肯定就是最大值了.求一次max就可以了. 仔 ...
- (水题)洛谷 - P1051 - 谁拿了最多奖学金
https://www.luogu.org/problemnew/show/P1051 这个根本就不用排序啊…… #include<bits/stdc++.h> using namespa ...
- HDU 4542 小明系列故事——未知剩余系 (数论|反素数)
分析 kuangbin的blog已经讲的很好了,我做一点补充 1.当做x*y>z的比较时,如果x \(\ast\) y过大,可以写成x>z/y 2.分解质因数时选择用f[][0]保存质数, ...
- WPF 加载 WINFORM控件 异常: 调度程序进程已挂起,但消息仍在处理中
在加载TradeAtServer的统计中的 单个合约盈亏情况 异常:,调度程序进程已挂起,但消息仍在处理中 发现可能是属性设置引发的问题 比如DateTimePikcer.Value+= set, g ...