【算法】搭配購買(01背包,加權并查集)

題目?

Joe覺得云朵很美,決定去山上的商店買一些云朵。

商店里有?n?朵云,云朵被編號為?1,2,…,n,并且每朵云都有一個價值。

但是商店老板跟他說,一些云朵要搭配來買才好,所以買一朵云則與這朵云有搭配的云都要買。

但是Joe的錢有限,所以他希望買的價值越多越好。

輸入格式

第?11?行包含三個整數?n,m,w,表示有?n 朵云,m?個搭配,Joe有?w?的錢。

第?2~n+1行,每行兩個整數?ci,di 表示?i 朵云的價錢和價值。

第?n+2~n+1+m 行,每行兩個整數?ui,vi,表示買?ui 就必須買?vi,同理,如果買?vi 就必須買?ui。

輸出格式

一行,表示可以獲得的最大價值。

數據范圍

1≤n≤10000
0≤m≤5000
1≤w≤10000
1≤ci≤5000
1≤di≤100
1≤ui,vi≤n

輸入樣例:
5 3 10
3 10
3 10
3 10
5 100
10 1
1 3
3 2
4 2
輸出樣例:
1

思路

? ? ? ? 1、初始狀態下,我們可以將每一件物品單獨放到一個集合中,如果購買物品1就要購買物品2則將1,2放入同一個集合中,并且集合的價值等于集合內所有的物品價值之和。如果要買一個物品,則需要購買該物品所屬集合的全部物品。(并查集)

? ? ? ? 2、使用01背包進行處理數據,使得使用給定的金錢買到的物品價值之和最大。(01背包)

01背包的原理在我之前的文章講述過。

代碼

#include<bits/stdc++.h>
using namespace std;
const int N = 10010;
int n,m,vol;
int v[N],w[N];
int p[N];
int f[N];int find(int x)
{if(p[x] != x) p[x] = find(p[x]);return p[x];
}int main()
{cin >> n >> m >> vol;for(int i = 1; i <= n; i ++) cin >> v[i] >> w[i];for(int i = 0; i <= n; i ++) p[i] = i;for(int i = 0; i < m; i ++){int a,b;cin >> a >> b;int pa = find(a),pb = find(b);if(pa != pb){p[pa] = pb;v[pb] += v[pa];w[pb] += w[pa];}}for(int i = 1; i <= n; i ++){if(p[i] == i){for(int j = vol; j - v[i] >= 0; j --)f[j] = max(f[j],f[j - v[i]] + w[i]);}}cout << f[vol] << endl;return 0;}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165281.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165281.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165281.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DDoS攻擊和CC攻擊有什么不同之處?

DDoS是針對服務器IP發起&#xff0c;CC攻擊針對的是業務端口。DDoS攻擊打的是網站的服務器&#xff0c;而CC攻擊是針對網站的頁面攻擊&#xff0c;用術語來說就是&#xff0c;一個是WEB網絡層拒絕服務攻擊&#xff08;DDoS&#xff09;&#xff0c;一個是WEB應用層拒絕服務攻擊…

Linux添加環境變量$PATH

變量$PATH 查看環境變量 [rootlocalhost lnserver]# echo $PATH /usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/root/bin由于沒有docker路徑的環境變量&#xff0c;docker命令使用無效 要將腳本添加到 PATH 中&#xff0c;以便無論在哪個目錄中都可以調用它或執行它&…

【鏈路追蹤】xxl-job定時任務日志增加traceId

問題背景 項目中通過sleuth實現了統一的traceId注入&#xff0c;在生產環境進行日志追溯時比較方便。但是在使用xxl-job進行定時任務管理時&#xff0c;卻發現xxl-job線程打印出來的日志沒有traceId&#xff0c;查詢日志時十分不方便&#xff0c;于是通過使用Spring aop的方式…

點云從入門到精通技術詳解100篇-基于深度學習的稀疏點云障礙物檢測

目錄 前言 國內外研究現狀 激光雷達點云配準 激光雷達目標檢測

c#代碼Linq中使用OrderBy進行自定義排序

c#代碼Linq中使用OrderBy進行自定義排序 /// <summary>/// 自定義字符串比較器 用于自定義排序/// </summary>public class StringComparer : IComparer<string>{/// <summary>/// 偏好的排序列表/// </summary>public List<string> _pre…

RK3568基于openharmony3.2版本之MIPI屏幕調試

mipi調試過程 1、前言2、開發環境3、調試過程3.1、下載openharmony3.2源碼3.2、設備樹上增加mipi-dsi屏幕的節點3.3、 分析kernel顯示不出來畫面3.4、 mipi屏幕顯示效果圖1、前言 由于工作需要,RK3568需要支持openharmony3.2系統版本,需要重新移植下載源碼并且適配自家公司的…

【JavaWeb】HTMLCSSJavaScript

HTML&CSS&JavaScript 文章目錄 HTML&CSS&JavaScript一、開發工具及在線幫助文檔二、 HTML2.1 HTML&CSS&JavaScript的作用2.2 HTML基礎結構2.3 HTML概念詞匯解釋2.4 HTML的語法規則2.5 常用標簽 三、CSS3.1 引入方式3.2 CSS選擇器3.3 CSS浮動3.4 CSS定位…

MindSpore基礎教程:LeNet-5 神經網絡在MindSpore中的實現與訓練

MindSpore基礎教程&#xff1a;LeNet-5 神經網絡在MindSpore中的實現與訓練 官方文檔教程使用已經棄用的MindVision模塊&#xff0c;本文是對官方文檔的更新 深度學習在圖像識別領域取得了顯著的成功&#xff0c;LeNet-5 作為卷積神經網絡的經典之作&#xff0c;在諸多研究和應…

Linux | 從虛擬地址到物理地址

前言 本章主要講解虛擬地址是怎么轉化成物理地址的&#xff0c;以及頁表相關知識&#xff1b;本文環境默認為32位機器下&#xff1b;如果你連什么是虛擬地址都不知道可以先看看下面這篇文章&#xff1b; Linux | 進程地址空間-CSDN博客 一、概念補充 頁表&#xff1a;是一種數據…

【性能優化】CPU利用率飆高與內存飆高問題

&#x1f4eb;作者簡介&#xff1a;小明java問道之路&#xff0c;2022年度博客之星全國TOP3&#xff0c;專注于后端、中間件、計算機底層、架構設計演進與穩定性建設優化&#xff0c;文章內容兼具廣度、深度、大廠技術方案&#xff0c;對待技術喜歡推理加驗證&#xff0c;就職于…

2023APMCM亞太杯數學建模選題建議及初步思路

大家好呀&#xff0c;亞太杯數學建模開始了&#xff0c;來說一下初步的選題建議吧&#xff1a; 首先定下主基調&#xff0c;本次亞太杯推薦選擇B題。 C題如果想做好&#xff0c;搜集數據難度并不低&#xff0c;并且模型比較簡單&#xff0c;此外目前選擇的人數過多&#xff0c…

java項目之消防物資存儲系統(ssm+vue)

項目簡介 消防物資存儲系統實現了以下功能&#xff1a; 管理員功能: 管理員登陸后&#xff0c;主要模塊包括首頁&#xff0c;個人中心&#xff0c;用戶管理&#xff0c;倉庫管理&#xff0c;物資入庫管理&#xff0c;物資出庫管理&#xff0c;倉庫管理&#xff0c;物資詳情管…

23年下半年軟考成績查詢時間是什么時候?

一、成績查詢時間 2023年下半年軟考成績查詢時間預計2023年12月份公布&#xff0c;成績查詢入口為計算機技術職業資格網&#xff08;全國統一成績查詢時間&#xff0c;統一查詢入口&#xff09;。 二、成績查詢方法 登陸中國計算機技術職業資格網&#xff0c;點擊“成績查詢”…

7-9 jmu-python-班級人員信息統計

7-9 jmu-python-班級人員信息統計 分數 15 作者 鄭如濱 單位 集美大學 輸入a,b班的名單&#xff0c;并進行如下統計。 輸入格式: 第1行:&#xff1a;a班名單&#xff0c;一串字符串&#xff0c;每個字符代表一個學生&#xff0c;無空格&#xff0c;可能有重復字符。 第2行:&am…

WPF實戰項目十六(客戶端):備忘錄接口

1、新增IMemoService接口&#xff0c;繼承IBaseService接口 public interface IMemoService : IBaseService<MemoDto>{} 2、新增MemoService類&#xff0c;繼承BaseService和IMemoService接口 public class MemoService : BaseService<MemoDto>, IMemoService{pub…

DRF-通用分頁器(PageNumberPagination):ListModelMixin可以使用的通用分頁器

一、ListModelMixin 和GenericAPIView源碼 ListModelMixin 是一個單一功能類&#xff0c;必須配合GenericAPIView&#xff08;或其子類&#xff09;來一起使用&#xff0c;才能完成其視圖的功能 class ListModelMixin:"""List a queryset."""d…

騰訊云點播小程序端上傳 SDK

云點播是專門應對上傳大視頻文件的。 騰訊云點播文檔&#xff1a;https://cloud.tencent.com/document/product/266/18177 這個文檔比較簡單&#xff0c;實在不行&#xff0c;把demo下載下來&#xff0c;一看就明白了&#xff0c;然后再揉一下挪到自己的項目里。完事。 getSign…

芯知識 | 混音播報語音芯片的優勢:革新音頻應用的新力量

隨著科技的進步&#xff0c;語音芯片在各個領域的應用越來越廣泛。而在眾多語音芯片中&#xff0c;混音播報語音芯片以其獨特的優勢&#xff0c;正逐漸成為音頻應用領域的翹楚。本文將重點探討混音播報語音芯片的優勢及其在現代科技應用中的價值。 一、混音播報語音芯片概述 …

element-vue實現網頁鎖屏功能

1.寫一個鎖屏頁面&#xff0c;這里比較簡單&#xff0c;自己定義一下,需要放到底層HTML中哦&#xff0c;比如index.html <div id"appIndex"><el-dialog title"請輸入密碼解鎖屏幕" :visible.sync"lockScreenFlag" :close-on-click-mod…

力扣236. 二叉樹的最近公共祖先(java DFS解法)

Problem: 236. 二叉樹的最近公共祖先 文章目錄 題目描述思路解題方法復雜度Code 題目描述 給定一個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。 百度百科中最近公共祖先的定義為&#xff1a;“對于有根樹 T 的兩個節點 p、q&#xff0c;最近公共祖先表示為一個節點 x&am…