题目链接

题目

题目描述

小d是一个搞房地产的土豪。每个人经商都有每个人经商的手段,当然人际关系是需要放在首位的。

小d每一个月都需要列出来一个人际关系表,表示他们搞房地产的人的一个人际关系网,但是他的精力有限,对应他只能和能够接触到的人交际。比如1认识2,2认识3,那么1就可以接触3进行交际,当然1和2也可以交际。

小d还很精明,他知道他和谁交际的深获得的利益大,接下来他根据自己的想法又列出来一个利益表,表示他和这些人交际需要耗用多少精力,能够获得的利益值为多少。

小d想知道,他在精力范围内,能够获得的利益值到底是多少。

设定小d自己的编号为1.并且对应一个人的交际次数限定为1.

输入描述

本题包含多组输入,第一行输入一个数t,表示测试数据的组数

每组数据的第一行输入三个数,N,M,C,表示这个人际关系网一共有多少个人,关系网的关系数,以及小d的精力值

接下来N-1行,每行两个数ai,bi。这里第i行表示和编号为i+1的人认识需要花费ai的精力,能够获得的利益值为bi。

再接下来M行,每行两个数x,y,表示编号为x的人能够和编号为y的人接触

t<=50

2<=N<=10000

1<=M<=10*N

1<=ai,bi<=10

1<=C<=500

1<=x,y<=N

输出描述

输出包含一行,表示小d能够获得的最大利益值

示例1

输入

1
5 3 7
5 10
3 2
4 3
1 100
1 2
2 3
1 4

输出

10

说明

小明能够接触到的人的编号有:2 3 4,那么对应接触编号为2的人花费5精力能够获得10的利益值是最优方案。

题解

知识点:背包dp,并查集。

用并查集维护关系集合,最后遍历所有元素,与 \(1\) 同根的就是小d能接触到的人。接下来是背包dp,只要考虑与 \(1\) 有关系的即可。

时间复杂度 \(O(m \log n + cn)\)

空间复杂度 \(O(n+c)\)

代码

#include <bits/stdc++.h>
#define ll long long using namespace std; int a[10007], b[10007], fa[10007], dp[100007]; int find(int x) {
return fa[x] == x ? x : fa[x] = find(fa[x]);
} void merge(int x, int y) {
fa[find(x)] = find(y);
} bool solve() {
int n, m, c;
cin >> n >> m >> c;
fa[1] = 1;
for (int i = 2;i <= n;i++) cin >> a[i] >> b[i], fa[i] = i;
for (int i = 1;i <= m;i++) {
int x, y;
cin >> x >> y;
merge(x, y);
}
///后悔贪心不能用于背包问题
///因为后悔贪心变量是限制和花费或收益,花费和收益中有一个是每个点相同的,后悔另一个
///而背包问题限制固定,变量是花费和收益
memset(dp, 0, sizeof(dp));
for (int i = 2;i <= n;i++)
if (find(i) == find(1))
for (int j = c;j >= a[i];j--)
dp[j] = max(dp[j], dp[j - a[i]] + b[i]);
cout << dp[c] << '\n';
return true;
} int main() {
std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int t = 1;
cin >> t;
while (t--) {
if (!solve()) cout << -1 << '\n';
}
return 0;
}

NC14545 经商的更多相关文章

  1. OpenCASCADE Interpolation - Lagrange

    OpenCASCADE Interpolation - Lagrange eryar@163.com Abstract. Power basis polynomial is the most simp ...

  2. [转]C/C++ 实现文件透明加解密

    今日遇见一个开超市的朋友,真没想到在高校开超市一个月可以达到月净利润50K,相比起我们程序员的工资,真是不可同日而语,这个世道啊,真是做程序员不如经商开超市, 我们高科技的从业者,真是造原子弹不如卖茶 ...

  3. 再牛逼的梦想,也抵不住SB似的坚持

    说起梦想,哪都是好几年前的事了.自从毕业之后,梦想不知道去哪了.可能一次次的失败,找不到了梦想的方向了吧! 自从毕业去了深圳,为了能够在这个城市安稳下来,白天正常上班晚上在街上摆地摊给人下载音乐和电影 ...

  4. 2015年,从毕业到工作的几点感悟(Android开发新人)

    锄禾日当午,汗滴禾下土.       2015年,从毕业到工作的几点感悟(Android开发): 多用三方类库:(成长经验:尽量不要自己手动实现网络上已经有的优秀开源类库的功能,例如: 网络请求:常见 ...

  5. [No00002A]26个英语字母的原始象形意义、含义、产生及发展历史

    我们都知道汉字是象形文字,但如果说英语也是象形文字,你一定会以为纯是无稽之谈.其实,追根溯源,英语的26个字母确实来自于象形文字.这26个字母最初起源于埃及象形文字,后由腓尼基人改进发明了腓尼基字母, ...

  6. [家里蹲大学数学杂志]第047期18 世纪法国数学界的3L

    1 Lagrange---78岁 约瑟夫·拉格朗日, 全名约瑟夫·路易斯·拉格朗日 (Joseph-Louis Lagrange 1735~1813) 法国数学家.物理学家. 1736年1月25日生于 ...

  7. 2015第18本:从0到1,ZERO to ONE, Notes on startups, or how to build the future

    <从0到1>中文版的副标题是”开创商业与未来的秘密“,题目大得吓人,英文副标题就谨慎了许多:Notes on startups, or how to build the future. 全 ...

  8. java8-4 多态的练习以及题目

    1./* 多态练习:猫狗案例*/ class Animal { public void eat(){ System.out.println("吃饭"); } } class Dog ...

  9. [团队项目3.0]Scrum团队成立

    Scrum团队成立 5.Scrum团队成立 5.1 团队名称,团队目标.团队口号.团队照: 5.2 角色分配 产品负责人: 决定开发内容和优先级排序,最大化产品以及开发团队工作的价值. Scrum M ...

  10. 越狱Season 1-Episode 1: the pilot

    the pilot: 美国电视剧新剧开播都会有一个试播来测试观众对新剧的接受程度,以此来决定是否再继续播下去,也可以说是一个开端,第一集,试播 -Tattoo Artist: That's it. t ...

随机推荐

  1. spring boot 整合kafka

    本文为博主原创,未经允许不得转载: 1. 引入spring boot kafka依赖 <dependency> <groupId>org.springframework.kaf ...

  2. 基于AHB_BUS的eFlash控制器的微架构设计

    eFlash微架构设计 1.回顾架构设计 2.Flash时序仿真 2.1 ahb_flashc项目目录 docs rtl sim tb model 2.2 docs 架构设计文档 微架构设计文档 集成 ...

  3. FileZilla 连接不上宝塔

    1,修改 pureftp的配置文件 ForcePassiveIP 为服务器的ip , 并去掉 # 2,FileZilla 使用明文连接

  4. [转帖]解Bug之路-记一次中间件导致的慢SQL排查过程

    https://zhuanlan.zhihu.com/p/242265937 解Bug之路-记一次中间件导致的慢SQL排查过程 前言 最近发现线上出现一个奇葩的问题,这问题让笔者定位了好长时间,期间排 ...

  5. [转帖]查询 HTTPS 网站 TLS 版本

    参考 检查网站的TLS版本 – wentao's blog Linux curl 命令详解 - 腾讯云开发者社区-腾讯云 TLS 版本查询_天泽岁月的博客-CSDN博客_查看tls版本 使用 Open ...

  6. [转帖]linux系统主机双网卡实现路由转发问题与解决

    1. 环境 拓扑: 网卡配置: host1: 192.168.1.1/24 host2: 左eth0: 192.168.1.2/24 右eth1: 192.168.2.2/24 host3: 192. ...

  7. [转帖]strace分析sqlplus登录慢问题

    一. 问题分析 有时会遇到sqlplus / as sysdba登录非常慢的问题,由于还没登录,通过数据库等待事件一般看不出来啥,需要用到strace这个分析利器.strace有很多参数,后面会列出, ...

  8. [转帖]Linux终端:用cat命令查看不可见字符

    https://developer.aliyun.com/article/80607 printf 'testing\012\011\011testing\014\010\012more testin ...

  9. [转帖]Linux下在文件内部指定行(首行、末尾行等)插入内容

    https://blog.csdn.net/drbing/article/details/52153766 1.在文件的首行插入指定内容: :~$ sed -i "1i#! /bin/sh ...

  10. [转帖]goofys

     Goofys is a high-performance, POSIX-ish Amazon S3 file system written in Go     Overview Goofys all ...