The contest———CSU - 1326(分组背包、并查集)

113、1272:【例9.16】分组背包--2020.03.31a.pdf 立即下载

题目:

  殷犇有很多队员。他们都认为自己是最强的,于是,一场比赛开始了~

  于是安叔主办了一场比赛,比赛有n个题目,每个题目都有一个价值Pi和相对能力消耗Wi,但是有些题目因为太坑不能同时做出来,并且坑题具有传递性。(a和b一起做会坑、b和c会坑则a和c也会坑) ACM队员们想知道,于是他们想知道在能力范围内,它们最多可以作出多少价值的题目。

  聪明的你,告诉我,能帮帮他们吗?

Input

  第1行两个整数,n,Wmax,k(0<=n,Wmax,k<=1000),其中n为题目总数,Wmax为初始的总能力数.

  接下来n行,为每个题目的Pi,Wi(0<=Pi<=1000,1<=Wi<=10,均为整数)

  再接下来k行,每行2个数字a,b表示a和b会坑

Output

  对每组数据输出1行为最大可能价值

Sample Input

3 10 1
100 1
200 5
10 5
1 2

Sample Output

210

Hint

  每个测试点1s

  

思路:

利用并查集先把组分出来,然后进行分组背包。

 

代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int book[1010],dp[1010];
struct node
{
    int f,p,w;
}a[1010],b[1010];
int getf(int x)
{
    if(a[x].f==x)
        return x;
    return a[x].f=getf(a[x].f);
}
void link(int x,int y)
{
    int t1=getf(a[x].f);
    int t2=getf(a[y].f);
    if(t1!=t2)
        a[t2].f=t1;
}
int main()
{
    int n,m,k;
    scanf("%d%d%d",&n,&m,&k);
    for(int i=1;i<=n;i++)
    {
        a[i].f=i;
        scanf("%d%d",&a[i].p,&a[i].w);
    }
    for(int i=0;i<k;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        link(x,y);
    }
    for(int i=1;i<=n;i++)
    {
        b[i].f=a[i].f;
        b[i].w=a[i].w;
        b[i].p=a[i].p;
        book[b[i].f]=1;
    }
    for(int i=1;i<=n;i++)
    {
        if(!book[i])
            continue;
        for(int k=m;k>=0;k--)
        {
            for(int j=1;j<=n;j++)
            {
                if(k>=b[j].w&&b[j].f==i)
                    dp[k]=max(dp[k],dp[k-b[j].w]+b[j].p);
            }
        }
    }
    printf("%d\n",dp[m]);
    return 0;
}

 

Flutter 中使用蓝牙插件报错,说没有权限怎么解决 2、在build.grale里面更改一下版本号,我修改的是targetSdkVersion这个版本号,需要根据你自己的版本进行更改,记得更改之后先flutter clean一下再run。搞了一晚上,没搞出来,第二天用同事手机测试发现他手机可以,我手机还是不行,才发现是Android版本问题,需要修改两处地方。废话不多说,咱先看报错信息。 阅读详情

相关推荐

[特殊字符]交通标志检测与分类数据集-智能驾驶系统 地图数据更新 1,886张图片

🚦交通标志检测与分类数据集-智能驾驶系统 地图数据更新 1,886张图片

cver123的博客 2072

hdu4749

题意来自 题目大意:学校要举办一场典礼,要从n个学生中选若干支队伍来,每支队伍有m个人。然后现在将学生的身高划分成k个等级,接着按照学生的顺序给出学生的身高等级,再然后,给出m个人的队伍要求的相对高度。然后要求从n个中间挑选连续的m个人,满足相对高度即可组成一支队伍。问说最多可以组成多少支队伍。解题思路:KMP算法的变形,只不过在判断相等的时候有点难办,因为它算的是相对高度,就是同一支队伍中,对应

老李2009 599

MATLAB实战:利用扫频数据重构系统伯德图的关键步骤

本文详细介绍了如何利用MATLAB处理扫频数据并重构系统伯德图的完整实战流程。内容涵盖数据导入与清洗、增益与相位的精确计算、频率响应数据对象(frd)的构建、数据平滑与插值处理,以及最终生成专业伯德图并进行关键参数(如相位裕度)标注的方法。文章重点解决了从实测“黑盒子”系统数据出发,获取直观频率响应特性曲线的核心问题,为控制系统分析与设计提供了实用指南。

weixin_29098117的博客 397

csu十月月赛 并查集+分组背包

1 #include<cstdio> 2 #define maxn 1005 3 #include<cstring> 4 #include<math.h> 5 #include<iostream> 6 using namespace std; 7 8 9 int f[maxn],v[maxn],p[max...

weixin_30256505的博客 161

MODBUS通讯不求人:手把手教你用三菱FX2N控制士林变频器

本文详细介绍了如何使用三菱FX2N PLC通过MODBUS协议控制士林变频器,涵盖硬件连接、参数配置、程序设计及通讯优化等关键步骤。特别针对没有内置MODBUS函数块的老款PLC,提供了CRC校验和稳定数据交换的实用解决方案,帮助工程师快速实现工业自动化设备的高效通讯。

v4w5x6的博客 226

保姆级教程:在摩尔线程MTT S80上快速部署Ollama运行DeepSeek R1模型(附性能测试)

本文提供了一份详细的保姆级教程,指导用户在摩尔线程MTT S80显卡上部署Ollama并运行DeepSeek R1模型。内容涵盖从驱动安装、Docker环境配置到模型拉取、性能测试的全流程,并分享了实测数据与优化技巧,旨在帮助开发者快速在国产GPU平台上实现高效的大语言模型推理。

weixin_29091837的博客 519

拔河大赛【并查集的变形】

题目链接   这道题要求的是对于相互认识的人链接在一起,且相互认识的人必须一起组队不能分开,那么这道题就可以是一道并查集问题,每次衔接的时候更新上每个节点的权值即可。 写了两遍,比赛时写了一遍,打完后总结又写了一遍。 #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;cmath&gt; #include &lt;s...

既然弱小,就只顾变强就是了 316

Matlab实战:用卡尔曼滤波搞定无人机GPS轨迹优化(附完整代码)

本文详细介绍了如何使用Matlab实现卡尔曼滤波(KF)算法优化无人机GPS轨迹,提供完整代码和工程实践指南。通过线性卡尔曼滤波技术,有效降低定位噪声,提升轨迹平滑度,适用于无人机导航和控制系统开发。

weixin_29061425的博客 253

洛谷P1197 星球大战(并查集)

【题目描述】 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治着整个星系。 某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球。这些星球通过特殊的以太隧道互相直接或间接地连接。 但好景不长,很快帝国又重新造出了他的超级武器。凭借这超级武器的力量,帝国开始有计划地摧毁反抗军占领的星球。由于星球的不断被摧毁,两个星球之间的通讯通道也开始不可靠起来。 现在,反抗军首领交给你一个任务:给出原来两个星球之间的以太隧道连通情况以及帝国打击的星球顺序,以尽量快的速度求出

一只快乐的小蒟蒻~ 646

python基础之语言发展历史

博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏。 目录一、前言二、发展历史1、Python是一种面向对象的解释型编程语言2、Python常被称为胶水语言3、Python由Guido开发4、Python连续多年入选编程语言TOP105、Python的发展历史三、总结 一、前言   由于Python语言的简洁性、易读性以及可扩展性,它在网络爬虫、数据分析、.

jiankang66的博客 3348

数据预处理

数据预处理 数据预处理(数据清洗)是数据挖掘过程中的重要一步,它主要包括数据清洗,数据集成,数据变换和数据规约。 在我们进行数据挖掘的过程中,大量的原始数据中存在着大量有问题的数据(脏数据)比如有缺失值的,不一致的,有异常的,大量重复的数据等。这些脏数据会严重影响到数据挖掘建模过程的执行效率,也可能会使挖掘结果产生偏差。通过数据预处理(数据清洗)可以提高数据的质量,更好的适应特定的挖掘技术及工具。...

CJW的博客 9929

动态规划(01背包+并查集)

题意:就是说有n朵云,每朵云有自己的价钱(重量)和价值(价值),还有我自己现在有钱的数目(背包),然后还告诉你,哪几朵云是属于捆绑销售的,我们在面对捆绑销售要一次性买了,因而我们可以看出来,这题其实就是并查集+01背包,并查集体现在捆绑销售,连通性问题思路:先用并查集将所有云进行连通,将连通的物品的价钱和价值累加到一个元素里面,然后进行01背包就可以秒了。

2301_80475191的博客 453

【YOLOv12[基础]】热力图可视化实践 | 脚本升级 | 优化可视化效果 | 论文必备 | GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM等

热力图可视化实践 | 脚本升级 | 优化可视化效果 | 论文必备 GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM等

静谧、淡雅 893

CSU 1326: The contest(并查集+分组背包)

CSU 1326: The contest 并查集+分组背包 Description   殷犇有很多队员。他们都认为自己是最强的,于是,一场比赛开始了~   于是安叔主办了一场比赛,比赛有n个题目,每个题目都有一个价值Pi和相对能力消耗Wi,但是有些题目因为太坑不能同时做出来,并且坑题具有传递性。(a和b一起做会坑、b和c会坑则a

csutxh1606的博客 466

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

CSU1326: The contest(并查集+分组背包)

Description   殷犇有很多队员。他们都认为自己是最强的,于是,一场比赛开始了~   于是安叔主办了一场比赛,比赛有n个题目,每个题目都有一个价值Pi和相对能力消耗Wi,但是有些题目因为太坑不能同时做出来,并且坑题具有传递性。(a和b一起做会坑、b和c会坑则a和c也会坑) ACM队员们想知道,于是他们想知道在能力范围内,它们最多可以作出多少价值的题目。   聪明的你

ACM!荣耀之路! 1844

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【happy birthday】CSU 1326 The contest【并查集+分组背包】

1326: The contest Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 680  Solved: 213 [Submit][Status] Description   殷犇有很多队员。他们都认为自己是最强的,于是,一场比赛开始了~   于是安叔主办了一场比赛,比赛有n个题目,每个题目都有一个价值Pi和相对能力消耗Wi,

mengxiang000000 445

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

CSU 1326:The contest(并查集+分组背包)

http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1326 题意:…… 思路:并查集建图处理出边,然后分组背包。 之前不会分组背包,比赛的时候也推不出来,不知道互斥的情况怎么搞。原来就和01背包差不多,只不过是把每个组当作一个物品,然后枚举容量的时候,加上内层枚举组内的物品。注意第三层枚举组内物品要写在容量的内层,才能满足组内最多选一个的互斥条...

weixin_30315905的博客 138

dp训练第20题 csu1326: The contest 分组背包 并查集

给定n个物品和一个容量为v的背包,还有m对连锁物品.每个物品都有一个体积volume[i]和价值value[i].如果两个物品是连锁的,那么它们不能同时放入背包中.注意连锁是具有传递性的. 用并查集将连锁物品分组,然后做分组背包即可.慎重写题. 并查集现在写的比较熟练了 int getfa(int p) { return save[p].fa==p?p:(save[p].fa=g...

秋叶红于二月花 419

CSU 1326: The contest(分组背包)

http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1326 题意: n个题目,每个题目都有一个价值Pi和相对能力消耗Wi,但是有些题目因为太坑不能同时做出来,并且坑题具有传递性。(a和b一起做会坑、b和c会坑则a和c也会坑) 它们最多可以作出多少价值的题目。 分析:先用并查集,将组分出来,然后进行分组背包 注...

aysd68784的博客 155

csu 1326 The contest

1326: The contest Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 569  Solved: 181 [Submit][Status][Web Board] Description   殷犇有很多队员。他们都认为自己是最强的,于是,一场比赛开始了~   于是安叔主办了一场比赛,比赛有n个题目,每个题目都

人生如梦,浮华一瞬间的专栏 640

csu 1326 The contest

裸的 并查集 + 分组背包; 1 #include<iostream> 2 #include<cstring> 3 #include<algorithm> 4 #include<stdio.h> 5 #include<cmath> 6 #include<vector> 7 usi...

weixin_30532837的博客 87

csu1326(The contest)

题目链接:传送门 题目思路:并查集加分组背包 #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> #include <cstring> #include <stac...

weixin_30871701的博客 111

【c语言】分组背包

【题目描述】 一个旅行者有一个最多能装V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,...,WnW1,W2,...,Wn,它们的价值分别为C1,C2,...,CnC1,C2,...,Cn。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 【输入】 第一行:三个整数,V(背包容量,V≤200),N(物品数量,N≤30)和T(最大组号,T≤10); 第2..N+1行:每行三个整数Wi,Ci,PWi,.

是派大星吖的博客 528

【c语言】开餐馆 [分组背包]

【题目描述】 信息学院的同学小明毕业之后打算创业开餐馆.现在共有nn个地点可供选择。小明打算从中选择合适的位置开设一些餐馆。这nn个地点排列在同一条直线上。我们用一个整数序列m1,m2,...mnm1,m2,...mn来表示他们的相对位置。由于地段关系,开餐馆的利润会有所不同。我们用pipi表示在mimi处开餐馆的利润。为了避免自己的餐馆的内部竞争,餐馆之间的距离必须大于kk。请你帮助小明选择一个总利润最大的方案。 【输入】 输入第一行是整数T(1≤T≤1000)T(1≤T≤1000),...

是派大星吖的博客 619

zcmu 2179 Lucky Country(并查集+背包)

【题目】   2179: Lucky Country Time Limit: 2 Sec  Memory Limit: 256 MB Submit: 10  Solved: 8 [Submit][Status][Web Board] Description E. Lucky Country time limit per test 1 second memory limit per ...

菜鸡成长史 414

分组背包

问题有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。算法这个问题变成了每组物品有若干种策略:是选择本组的某一件,还是一件都不选。也就是说设f[k][v]表示前k组物品花费费用v能取得的最大权值,则有:f[k][v]=max{f[k-1][...

nywsp的专栏 1万+
上一篇: Almost Union-Find(并查集 删除)——UVa 11987
下一篇: Roadblocks ———POJ - 3255 (次短路)
admin__
博客等级 码龄8年 3粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值