藍橋杯5130 健身

問題描述

小藍要去健身,他可以在接下來的?1~n 天中選擇一些日子去健身。

他有?m?個健身計劃,對于第?i?個健身計劃,需要連續的?2^{ki}?天,如果成功完成,可以獲得健身增益?si??,如果中斷,得不到任何增益。

同一個健身計劃可以多次完成,也能多次獲得健身增益,但是同一天不能同時進行兩個或兩個以上的健身計劃。

但是他的日程表中有?q?天有其他安排,不能去健身,問如何安排健身計劃,可以使得?n?天的健身增益和最大。

輸入格式

第一行輸入三個整數?n,m,q 。

第二行輸入?q?個整數,t1,t2,t3...tq??,代表有其他安排的日期。

接下來?m?行,每行輸入兩個整數?ki,si??。代表該訓練計劃需要?2^{ki} 天,完成后可以獲得?si??的健身增益。

輸出格式

一個整數,代表最大的健身增益和。

樣例輸入

10 3 3
1 4 9
0 3
1 7
2 20

樣例輸出

30

說明

在樣例中?2~3 天進行計劃?2?,5~8 天進行計劃?3?,?10~10?天進行計劃?1?。

評測數據范圍

數據范圍:?1≤q≤n≤2×?10^{5},?1≤m≤50 ,?1≤si≤10^{9}?,?0≤ki≤20 ,?1≤t1<t2<...<tq≤n 。

?

?

完全背包問題,枚舉空閑段天數,每一段使用完全背包

問題轉化
  • 每個健身計劃?i?是一個“物品”:

    • 體積v[i](需要的天數)。

    • 價值w[i](健身增益)。

  • 背包容量day[k](當前區間的可用天數)。

  • 目標:在不超過?day[k]?的情況下,選擇若干健身計劃(可重復),使總價值最大。

狀態轉移
  • f[j] = max(f[j], f[j - v[i]] + w[i])

    • f[j]:不選當前計劃。

    • f[j - v[i]] + w[i]:選當前計劃,剩余天數?j - v[i]?的最優解加上當前價值。

#include<iostream>
#include<cmath>
#include<algorithm>#define int long long
using namespace std;const int N = 2e5+10;
int n, m, q;
int k[N];
int t[N];  //存儲由其他安排的日期  
int v[N], w[N];
int day[N];  //day[i]:第i個區間的可用天數
int dp[N];  //dp[i]:表示用 i 天能獲得的最大增益
int ans;signed main()
{cin>>n>>m>>q;for(int i=1; i<=q; ++i) cin>>t[i];for(int i=1; i<=m; ++i) cin>>k[i]>>w[i];//計算每個區間的可用天數t[0]=1, t[q+1]=n;  //為了計算day[i]賦的值 for(int i=q+1; i>0; --i){if(i==1 || i==q+1) day[i] = t[i] - t[i-1];else day[i] = t[i] - t[i-1]-1;} //計算每個健身計劃需要的連續天數 for(int i=1; i<=m; ++i){v[i]= pow(2, k[i]);}for(int i=1; i<=q+1; ++i)  //遍歷每個可健身區間{for(int j=1; j<=m; ++j)  //遍歷每個健身計劃{for(int p=v[j]; p<=day[i]; ++p){dp[p] = max(dp[p], dp[p-v[j]] + w[j]);}}ans += dp[day[i]];}cout<<ans;return 0;
}

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

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

相關文章

auto關鍵字解析

前言 在11標準之前&#xff0c;auto在c中是聲明存儲器類型的關鍵字。而在11標準中它的功能變為了類型推導。 對此&#xff0c; 在這里引入Cprimer中的原句&#xff1a; 編程時常常需要把表達式的值賦給變量&#xff0c;這就要求在聲明變量的時候清楚的知道表達式的類型。然而…

嵌入式STM32學習——串口USART 2.0(printf重定義及串口發送)

printf重定義&#xff1a; C語言里面的printf函數默認輸出設備是顯示器&#xff0c;如果要實現printf函數輸出正在串口或者LCD顯示屏上&#xff0c;必須要重定義標準庫函數里調用的與輸出設備相關的函數&#xff0c;比如printf輸出到串口&#xff0c;需要將fputc里面的輸出指向…

信號量機制:操作系統中的同步與互斥利器

在計算機操作系統中&#xff0c;信號量機制是一種重要的進程同步與互斥工具。它廣泛應用于多進程或多線程環境中&#xff0c;用于解決并發訪問共享資源時可能出現的競態條件問題。本文將從信號量的基本概念出發&#xff0c;逐步深入探討其工作原理、實現方式以及實際應用&#…

LeetCode 1004. 最大連續1的個數 III

LeetCode 1004題 “最大連續1的個數 III” 是一道關于數組和滑動窗口的問題。題目描述如下&#xff1a; 題目描述 給定一個由若干 0 和 1 組成的數組 nums&#xff0c;以及一個整數 k。你可以將最多 k 個 0 翻轉為 1。返回經過翻轉操作后&#xff0c;數組中連續 1 的最大個數…

digitalworld.local: FALL靶場

digitalworld.local: FALL 來自 <digitalworld.local: FALL ~ VulnHub> 1&#xff0c;將兩臺虛擬機網絡連接都改為NAT模式 2&#xff0c;攻擊機上做namp局域網掃描發現靶機 nmap -sn 192.168.23.0/24 那么攻擊機IP為192.168.23.182&#xff0c;靶場IP192.168.23.4 3&…

經典Java面試題的答案——Java 基礎

大家好&#xff0c;我是九神。這是互聯網技術崗的分享專題&#xff0c;廢話少說&#xff0c;進入正題&#xff1a; 1.JDK 和 JRE 有什么區別&#xff1f; JDK&#xff1a;Java Development Kit 的簡稱&#xff0c;java 開發工具包&#xff0c;提供了 java 的開發環境和運行環境…

LabVIEW風機狀態實時監測

在當今電子設備高度集成化的時代&#xff0c;設備散熱成為關鍵問題。許多大型設備機箱常采用多個風機協同散熱&#xff0c;確保系統穩定運行。一旦風機出現故障&#xff0c;若不能及時察覺&#xff0c;可能導致設備損壞&#xff0c;造成巨大損失。為滿足對機箱內風機狀態實時監…

18 C 語言算術、關系、邏輯運算符及 VS Code 警告配置詳解

1 運算符與表達式核心概念 1.1 什么是運算符 運算符是編程和數學中具有特定功能的符號&#xff0c;用于對數據進行運算、賦值、比較及邏輯處理等操作。它們能夠改變、組合或比較操作數的值&#xff0c;進而生成新值或觸發特定動作。 1.2 什么是表達式 表達式是編程和數學中用…

shell腳本之函數詳細解釋及運用

什么是函數 通俗地講&#xff0c;所謂函數就是將一組功能相對獨立的代碼集中起來&#xff0c;形成一個代碼塊&#xff0c;這個代碼可 以完成某個具體的功能。從上面的定義可以看出&#xff0c;Shell中的函數的概念與其他語言的函數的 概念并沒有太大的區別。從本質上講&#…

86.評論日記

再談小米SU7高速爆燃事件_嗶哩嗶哩_bilibili 2025年5月21日14:00:45

Babylon.js學習之路《七、用戶交互:鼠標點擊、拖拽與射線檢測》

文章目錄 1. 引言&#xff1a;用戶交互的核心作用1.1 材質與紋理的核心作用 2. 基礎交互&#xff1a;鼠標與觸摸事件2.1 綁定鼠標點擊事件2.2 觸摸事件適配 3. 射線檢測&#xff08;Ray Casting&#xff09;3.1 射線檢測的原理3.2 高級射線檢測技巧 4. 拖拽物體的實現4.1 拖拽基…

adb抓包

目錄 抓包步驟 步驟 1: 獲取應用的包名 步驟 2: 查看單個應用的日志 步驟 3: 使用日志級別過濾器 步驟 4: 高級日志過濾 可能的原因&#xff1a; 解決方案&#xff1a; 額外提示&#xff1a; 日志保存 抓包步驟 連接設備 adb devices 步驟 1: 獲取應用的包名 首先…

什么是實時流數據?核心概念與應用場景解析

在當今數字經濟時代&#xff0c;實時流數據正成為企業核心競爭力。金融機構需要實時風控系統在欺詐交易發生的瞬間進行攔截&#xff1b;電商平臺需要根據用戶實時行為提供個性化推薦&#xff1b;工業物聯網需要監控設備狀態預防故障。這些場景都要求系統能夠“即時感知、即時分…

百度飛槳OCR(PP-OCRv4_server_det|PP-OCRv4_server_rec_doc)文本識別-Java項目實踐

什么是OCR? OCR&#xff08;Optical Character Recognition&#xff0c;光學字符識別&#xff09;是一種通過技術手段將圖像或掃描件中的文字內容轉換為可編輯、可搜索的文本格式&#xff08;如TXT、Word、PDF等&#xff09;的技術。它廣泛應用于文檔數字化、信息提取、自動化…

Pytorch實現常用代碼筆記

Pytorch實現常用代碼筆記 基礎實現代碼其他代碼示例Networks or ProjectsNetwork ModulesLossUtils 基礎實現代碼 參考 深度學習手寫代碼 其他代碼示例 Networks or Projects SENet學習筆記 SKNet——SENet孿生兄弟篇 GCNet&#xff1a;當Non-local遇見SENet YOLOv1到YOLO…

word通配符表

目錄 一、word查找欄代碼&通配符一覽表二、word替換欄代碼&通配符一覽表三、參考文獻 一、word查找欄代碼&通配符一覽表 序號清除使用通配符復選框勾選使用通配符復選框特殊字符代碼特殊字符代碼or通配符1任意單個字符^?一個任意字符?2任意數字^#任意數字&#…

TYUT-企業級開發教程-第6章

這一章 考點不多 什么是緩存&#xff1f;為什么要設計出緩存&#xff1f; 企業級應用為了避免讀取數據時受限于數據庫的訪問效率而導致整體系統性能偏低&#xff0c;通 常會在應用程序與數據庫之間建立一種臨時的數據存儲機制&#xff0c;該臨時存儲數據的區域稱 為緩存。緩存…

雙檢鎖(Double-Checked Locking)單例模式

在項目中使用雙檢鎖&#xff08;Double-Checked Locking&#xff09;單例模式來管理 JSON 格式化處理對象&#xff08;如 ObjectMapper 在 Jackson 庫中&#xff0c;或 JsonParser 在 Gson 庫中&#xff09;是一種常見的做法。這種模式確保了對象只被創建一次&#xff0c;同時在…

華為網路設備學習-22(路由器OSPF-LSA及特殊詳解)

一、基本概念 OSPF協議的基本概念 OSPF是一種內部網關協議&#xff08;IGP&#xff09;&#xff0c;主要用于在自治系統&#xff08;AS&#xff09;內部使路由器獲得遠端網絡的路由信息。OSPF是一種鏈路狀態路由協議&#xff0c;不直接傳遞路由表&#xff0c;而是通過交換鏈路…

數獨求解器3.0 增加latex格式讀取

首先說明兩種讀入格式 latex輸入格式說明 \documentclass{article} \begin{document}This is some text before oku.\begin{array}{|l|l|l|l|l|l|l|l|l|} \hline & & & & 5 & & 2 & 9 \\ \hline& & 5 & 1 & & 7…