貪心(臨項交換)+01背包,藍橋云課 搬磚

一、題目

1、題目描述

2、輸入輸出

2.1輸入

2.2輸出

3、原題鏈接

0搬磚 - 藍橋云課 (lanqiao.cn)


二、解題報告

1、思路分析

將物品按照w[i] + v[i]升序排序然后跑01背包就是答案

下面證明:(不要問怎么想到的,做題多了就能想到,和谷歌那道能量石一樣的套路)
對于物品i, j, 前面已經有了W

現:w[i] + v[i] <= w[j] + v[j]

且j 能排在前面 ,我們要推出?i 是否也能在前面

因為j在前面所以,v[j] >= W ? v[i] >= W + w[j]

結合[i] + v[i] <= w[j] + v[j]可推出:v[j] - w[i] >= v[i] - w[j] >= W

進而推出:v[j] >= W + w[i]
故i在前面時,v的價值大于前面的重量和,得證

那么對于任何一個最優解,我們按照w[] + v[]升序排序,不影響最優解的合法性,仍然得到最優解

換句話說,我們在原問題的集合中找到了一個小集合:w[] + v[]升序

且小集合中存在最優解

那么我們在這個小集合中跑01背包就能得到最優解

所以排序后跑01背包就行

注意倒序枚舉時,容量初始為w[] + v[]

因為v[] >= m - w[] => m <= v[] + w[]

2、復雜度

時間復雜度: O(nlogn + Σ(v[i] + w[i]))空間復雜度:O(n)

3、代碼詳解

?
#include <bits/stdc++.h>const int N = 1010;int n, tot, m, f[200010];struct node {int w, v;bool operator < (const node& x) const {return v + w <= x.v + x.w;}
} nodes[N];int main () {std::cin >> n;for (int i = 0; i < n; i ++ ) std::cin >> nodes[i].w >> nodes[i].v, m += nodes[i].w;std::sort(nodes, nodes + n);for (int i = 0; i < n; i ++ )for (int j = std::min(m, nodes[i].w + nodes[i].v); j >= nodes[i].w; j -- )f[j] = std::max(f[j], f[j - nodes[i].w] + nodes[i].v);std::cout << *std::max_element(f, f + m + 1);return 0;
}

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

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

相關文章

AVB協議分析(一) FQTSS協議介紹

FQTSS協議介紹 一、AVB整體架構二、概述三、協議作用及作用對象四、協議的實現五、參考文獻&#xff1a; 一、AVB整體架構 可見FQTSS位于MAC層的上面&#xff0c;代碼看不懂&#xff0c;咱們就從最底層開始&#xff0c;逐層分析協議&#xff0c;逐個擊破&#xff0c;慢就是快。…

基于GO 寫的一款 GUI 工具,M3u8視頻下載播放器-飛鳥視頻助手

M3u8視頻下載播放器-飛鳥視頻助手 M3u8視頻飛鳥視頻助手使用m3u8下載m3u8 本地播放 軟件下載地址m3u8嗅探 M3u8視頻 M3u8視頻格式是為網絡視頻播放設計&#xff0c;視頻網站多數采用 m3u8格式。如騰訊&#xff0c;愛奇藝等網站。 m3u8和 mp4的區別&#xff1a; 一個 mp4是一個…

【PB案例學習筆記】-12秒表實現

寫在前面 這是PB案例學習筆記系列文章的第11篇&#xff0c;該系列文章適合具有一定PB基礎的讀者。 通過一個個由淺入深的編程實戰案例學習&#xff0c;提高編程技巧&#xff0c;以保證小伙伴們能應付公司的各種開發需求。 文章中設計到的源碼&#xff0c;小凡都上傳到了gite…

Python3 筆記:math模塊

要使用 math 函數必須先導入math模塊 語法&#xff1a;import math Python math 模塊提供了許多對浮點數的數學運算函數。 math 模塊下的函數&#xff0c;返回值均為浮點數&#xff0c;除非另有明確說明。 如果需要計算復數&#xff0c;需使用 cmath 模塊中的同名函數。 m…

【2.文件和目錄相關(下)】

一、查看文件內容命令 1、cat 文件名&#xff1a;用于顯示文件內容&#xff0c;比如 cat test.c。 &#xff08;1&#xff09;cat -b test.c 表示加行號顯示文件內容。 &#xff08;2&#xff09;cat -s test.c 表示多個空行合并成一個空行顯示。 2、nl 文件名&#xff1a;…

2024 京麟ctf -MazeCodeV1

文章目錄 檢查代碼思路一個字節的指令注意附上S1uM4i佬們的exp https://www.ctfiot.com/184181.html 檢查 代碼 __int64 __fastcall check_solve(char *a1) {__int64 result; // rax__int64 v2; // rax__int64 index_step; // rax__int64 v4; // rax__int64 v5; // rax__int64…

vb.net,C#強制結束進程,“優雅”的退出方式

在VB.NET中&#xff0c;Application.Exit()和Environment.Exit(0)都用于結束程序&#xff0c;但它們的使用場景和背后的邏輯略有不同。 **Application.Exit()**&#xff1a; Application.Exit()通常用于Windows Forms應用程序中。當調用Application.Exit()時&#xff0c;它會觸…

cocos 屏幕點擊坐標轉換為節點坐標

let scPos event.getLocation(); let camera find(Canvas/Camera).getComponent(Camera).screenToWorld(new Vec3(scPos.x,scPos.y,0));//攝像機 let p this.node.getComponent(UITransform).convertToNodeSpaceAR(camera);//this.node為指定的節點為原點&#xff08;0,0&…

MVC架構中的servlet層重定向404小坑

servlet層中的UserLoginServlet.java package com.mhys.servlet; /*** ClassName: ${NAME}* Description:** Author 數開_11* Create 2024-05-29 20:32* Version 1.0*/import com.mhys.pojo.User; import com.mhys.service.UserService; import com.mhys.service.impl.UserSer…

Unix環境高級編程--8-進程控制---8.7函數waitid 8.8函數wait3 wait4

1、Single Unix Specification支持一個取得進程終止狀態的函數--waitid&#xff0c;此函數類似于waitpid&#xff1a; pid_t wait(int *status); pid_t waitpid(pid_t pid, int *status, int options); int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options); …

MySQL之創建高性能的索引(六)

創建高性能的索引 選擇合適的索引列順序 當使用前綴索引的時候&#xff0c;在某些條件值的基數比正常值高的時候&#xff0c;問題就來了。例如&#xff0c;在某些應用程序中&#xff0c;對于沒有登錄的用戶&#xff0c;都將其用戶名記錄為"guest"&#xff0c;在記錄…

【axios】的淺度分析

一、Axios的攔截器能干些什么&#xff1f; Axios攔截器的實現原理主要涉及兩個方面&#xff1a;請求攔截器和響應攔截器&#xff0c;它們分別在請求發送前和響應返回后進行預處理和后處理。 Axios內部維護了兩個數組&#xff0c;一個用于存儲請求攔截器&#xff0c;另一個用于…

數據庫基礎+增刪查改初階

數據庫基礎增刪查改初階 一。數據庫操作 1.概念&#xff1a; 一個mysql服務器上有很多的表&#xff0c;把有關系的表放在一起就構成了一個數據集合&#xff0c;此時稱為“數據庫”&#xff0c;一個mysql1服務器上可以有多個這樣的數據庫 2.創建數據庫&#xff1a; create …

穩住!一招制勝:打造JavaScript防抖函數的終極指南【含代碼示例】

穩住&#xff01;一招制勝&#xff1a;打造JavaScript防抖函數的終極指南【含代碼示例】 防抖函數&#xff1a;概念與作用基礎實現&#xff1a;案例一簡單防抖函數使用示例 進階功能&#xff1a;案例二 - 立即執行版本性能優化與安全考量實戰技巧與問題排查實際問題與解決方案結…

基于python flask的旅游數據大屏實現,有爬蟲有數據庫

背景 隨著旅游行業的快速發展&#xff0c;數據在旅游決策和規劃中的重要性日益凸顯。基于 Python Flask 的旅游數據大屏實現研究旨在結合爬蟲技術和數據庫存儲&#xff0c;為用戶提供全面、實時的旅游信息展示平臺。 爬蟲技術作為數據采集的重要手段&#xff0c;能夠從各種網…

錯誤記錄:從把項目從Tomcat8.5.37轉到Tomcat10.1.7

錯誤信息&#xff1a;在本地Servlet項目里沒有報錯&#xff0c;但是瀏覽器跳轉該servlet時報錯 型 異常報告 消息 實例化Servlet類[com.wangdao.lx.MyServlet1]異常 描述 服務器遇到一個意外的情況&#xff0c;阻止它完成請求。 例外情況 jakarta.servlet.ServletExceptio…

Generative Action Description Prompts for Skeleton-based Action Recognition

標題&#xff1a;基于骨架的動作識別的生成動作描述提示 源文鏈接&#xff1a;https://openaccess.thecvf.com/content/ICCV2023/papers/Xiang_Generative_Action_Description_Prompts_for_Skeleton-based_Action_Recognition_ICCV_2023_paper.pdfhttps://openaccess.thecvf.c…

解決文件傳輸難題:如何繞過Gitee的100MB上傳限制

引言 在版本控制和代碼托管領域&#xff0c;Gitee作為一個流行的平臺&#xff0c;為用戶提供了便捷的服務。然而&#xff0c;其對單個文件大小設定的100MB限制有時會造成一些不便。 使用云存儲服務 推薦理由&#xff1a; 便捷性&#xff1a;多數云存儲服務如&#xff1a; Dro…

現代操作系統上創建各類鏈接的方法匯總

文章目錄 現代操作系統上創建各類鏈接的方法匯總windows: cmd下的mklink創建鏈接示例 powershell 創建鏈接創建常規文件和目錄創建鏈接 linux shell 創建硬鏈接NAMESYNOPSIS詳細說明常用選項示例 檢查與辨識符號鏈接&#x1f388;linux下檢查ls -l 命令file 命令 windows下檢查…

零基礎學習圖生圖

目錄 一、圖生圖是什么二、安裝秋葉整合包2.1 秋葉包安裝2.2 秋葉包拓展安裝&#xff1a;2.3 ckpt配置&#xff1a;2.4 界面常用功能配置&#xff1a; 三、圖生圖基本功能展示3.1 圖生圖的界面3.2 重要的參數設置&#xff1a;3.3 涂鴉功能3.4 局部重繪功能3.5 涂鴉重繪3.6 上傳…