牛客小白月賽60 C 小竹關禁閉(動態規劃 01背包)

題目描述
媽媽成功將小竹救了出來,她覺得小竹實在是太笨了,決定關小竹一周禁閉。可是小竹哪里能忍受失去自由,他早就偷藏了一部手機用于聯系你,請求你幫助他逃離。

你通過觀察發現他房間內有 n n n 個可用于制成繩子的物品,第 i i i 個的長度為 a i a_i ai? 。當你使用第 i i i 個物品制作繩子時,其右側的 k k k 個物品(不含第 i i i個物品)就無法再被用于制作繩子 。最終,小竹用選擇的物品制成繩子,繩子的長度是所選擇物品的長度之和。

小竹想知道,他能制作的繩子長度最長為多少?

輸入描述:
第一行兩個整數 n , k ( 1 ≤ k ≤ n ≤ 2000 ) n,k(1≤k≤n≤2000) n,k(1kn2000)
第二行 n n n 個用空格隔開的整數,第 i i i 個整數為 ( 1 ≤ a i ? ≤ 2000 ) (1≤a_i? ≤2000) (1ai??2000),表示第 i i i 個物品的長度。

輸出描述:
一行一個整數,表示繩子的最長長度。

輸入

5 2
1 2 3 4 5

輸出

7

說明
使用第 2 2 2 個和第 5 5 5 個物品制成繩子


賽時壓根沒看出來是一個dp問題。

對于此問題,使用 f [ i ] f[i] f[i]來代表從前 i i i個里面選,這時候需要先分為兩種情況,第一種情況是第 i i i個物品前面有 k k k個物品,也就是 i ? k ? 1 > = 0 i-k-1 >= 0 i?k?1>=0,這時候我們就可以把集合劃分為選第 i i i個還是不選第 i i i個,如果選第 i i i個,就是 f [ i ? k ? 1 ] + a [ i ] f[i-k-1] + a[i] f[i?k?1]+a[i],如果不選第 i i i個,就是 f [ i ? 1 ] f[i-1] f[i?1],第二種情況是前 i i i個物品不夠 k k k個物品,這時如果選第 i i i個,就是 a [ i ] a[i] a[i] ,如果不選第 i i i個,就是 f [ i ? 1 ] f[i-1] f[i?1]

代碼:

#include<iostream>
using namespace std;
const int N = 2010;
int f[N];
int a[N];
int n,k;
int main(){cin >> n >> k;for(int i = 1;i <= n;i++)cin >> a[i];int res = 0;for(int i = 1;i <= n;i++){if(i-k-1 >= 0)f[i] = max(f[i-1],f[i-k-1]+a[i]);else f[i] = max(a[i],f[i-1]);res = max(f[i],res);}cout << res;return 0;
}

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

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

相關文章

數學建模【灰色關聯分析】

一、灰色關聯分析簡介 一般的抽象系統,如社會系統、經濟系統、農業系統、生態系統、教育系統等都包含有許多種因素&#xff0c;多種因素共同作用的結果決定了該系統的發展態勢。人們常常希望知道在眾多的因素中&#xff0c;哪些是主要因素&#xff0c;哪些是次要因素;哪些因素…

Android各版本差異性

Android各版本差異性 Android 6&#xff08;api 23&#xff09; 指紋識別 運行時權限&#xff1a;動態申請&#xff08;重點&#xff09; 移除對Apache HTTP client的支持&#xff0c;建議使用HttpURLConnection。 休眠和應用待機模式&#xff08;Doze and App Standby&…

web學習筆記(二十三)

目錄 1.增加節點 1.1document.write 1.2innerHTML 1.3動態添加 1.4追加和插入節點 2.刪除、克隆、替換節點 2.1刪除節點 2.2克隆節點 2.3替換節點 3.事件 3.1什么是事件 3.2事件三要素 3.3事件的種類 3.4常見事件名稱&#xff08;類型&#xff09;匯總 4.操作…

代碼隨想錄算法訓練營第三十四天| 860.檸檬水找零, 406.根據身高重建隊列 ,452. 用最少數量的箭引爆氣球

860.檸檬水找零 - LeetCode 思路&#xff1a; 這個問題比較簡單&#xff0c; 用一個字典bill_dict記錄已經收到的錢已經錢的數量&#xff0c; 然后如果收到五元&#xff0c; 字典中的 bill_dict[5] 1。 收到10元 bill_dict[5] - 1 bill_dict[10] 1 。 麻煩的是收到20元&…

圖像剪輯|Linux|ImageMagick的初步使用--素描,毛玻璃等特效

前言&#xff1a; ImageMagick在圖像剪輯領域的地位基本等同于FFmpeg&#xff0c;和FFmpeg基本一樣&#xff0c;在Linux下使用此工具的原因是該工具可以使用shell腳本批量剪輯&#xff0c;在Windows下就會比較麻煩一些了 那么&#xff0c;本文主要是記錄一下ImageMagick的一些…

論文閱讀:基于超像素的圖卷積語義分割(圖結構數據)

#Superpixel-based Graph Convolutional Network for Semantic Segmentation github鏈接 引言 GNN模型根據節點特征周圍的邊來訓練節點特征&#xff0c;并獲得最終的節點嵌入。通過利用具有不同濾波核的二維卷積對來自附近節點的信息進行整合&#xff0c;給定超像素方法生成的…

汽車上的各種質量:整備質量、總質量、裝載質量、簧上質量

文章目錄 前言一、整備質量二、額定總質量三、額定裝載質量四、簧上質量 總結 前言 一、整備質量 整備質量指的是汽車按照出廠技術條件完全配備&#xff08;包括備胎、工具、各種油水等&#xff09;的質量。汽車的整備質量也就是人們常說的一輛汽車的自重&#xff0c;它的規范…

MATLAB--pie函數繪制復雜分類餅圖(2)--附案例代碼

MATLAB–pie函數繪制復雜分類數據的餅狀圖 目錄 MATLAB--pie函數繪制復雜分類數據的餅狀圖摘要1. 問題描述2. 具體步驟&#xff1a;3. 繪制結果4. 小結 摘要 在數據可視化中&#xff0c;餅狀圖是一種常用的展示分類數據的方式。之前&#xff0c;文章介紹了使用MATLAB繪制餅狀圖…

數據刪除

目錄 數據刪除 刪除員工編號為 7369 的員工信息 刪除若干個數據 刪除公司中工資最高的員工 Oracle從入門到總裁:??????https://blog.csdn.net/weixin_67859959/article/details/135209645 數據刪除 刪除數據就是指刪除不再需要的數據 delete from 表名稱 [where 刪…

群暉Synology Drive服務搭建結合內網穿透實現云同步Obsidian筆記文件夾

&#x1f308;個人主頁: Aileen_0v0 &#x1f525;熱門專欄: 華為鴻蒙系統學習|計算機網絡|數據結構與算法 ?&#x1f4ab;個人格言:“沒有羅馬,那就自己創造羅馬~” #mermaid-svg-ebec69DBjtGk7apF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

C++字典操作

創建字典 #include<iostream> #include<map> #include<string>using namespace std;int main(){map<string, int> mymap;}賦值 2.1 指定元素賦值 mymap["abc"] 1;2.2 添加鍵值對 mymap.insert(make_pair("bcd", 2));字典的順序…

后端傳給前端的時間字段前端顯示不正確

具體問題是什么呢&#xff0c;就比如我后段有一個字段是TimeStamp類型&#xff0c;從數據庫中查出數據是下面的樣式&#xff1a; 但是前端顯示的是下面的格式&#xff1a; 這個的解決方法還是挺多的&#xff0c;那接下來具體來看看吧~ 第一種&#xff1a; 在application.prop…

Linux使用bcache 將SSD加速硬盤

前言 在Linux下&#xff0c;使用SSD為HDD加速&#xff0c;目前較為成熟的方案有&#xff1a;flashcache&#xff0c;enhanceIO&#xff0c;dm-cache&#xff0c;bcache等&#xff0c;多方面比較以后最終選擇了bcache。 bcache 是一個 Linux 內核塊層超速緩存。它允許使用一個或…

Flink 面試題總結及答案

基礎 state的分類 key state和operate state state 的重分布 Flink狀態管理詳解&#xff1a;Keyed State和Operator List State深度解析 - 掘金 checkpoint 和save point https://zhuanlan.zhihu.com/p/79526638 flink job 的容錯策略 如果在沒有持續消息輸出的情況下&…

19.AUTOSAR MCAL分析(一):Microcontroller Driver

目錄 1. MCAL概述 2. Microcontroller Drivers 2.1 MCU Drivers 2.2 GPT Driver 2.3 WatchDog Driver 2.4 CoreTest 3.小結 <

【短時交通流量預測】基于單層BP神經網絡

課題名稱&#xff1a;基于單層BP神經網絡的短時交通流量預測 版本時間&#xff1a;2023-04-27 代碼獲取方式&#xff1a;QQ&#xff1a;491052175 或者 私聊博主獲取 模型簡介&#xff1a; 城市交通路網中交通路段上某時刻的交通流量與本路段前幾個時段的交通流量有關&…

Android 自定義組件

在 Android 開發中&#xff0c;有時我們需要創建自定義的 UI 組件以滿足特定的需求&#xff0c;這就是 Android 自定義組件的用途。在這篇博客中&#xff0c;我們將介紹如何創建和使用自定義組件&#xff0c;并以一個標題欄組件為例進行說明。 什么是自定義組件&#xff1f; …

【CSP試題回顧】201312-3-最大的矩形

CSP-201312-3-最大的矩形 解題思路 1. 遍歷所有可能的矩形高度&#xff1a; 通過遍歷所有矩形高度來找到最大的矩形&#xff0c;即對每個可能的高度 it&#xff08;從直方圖中的最小高度到最大高度 heightMax&#xff09;&#xff0c;代碼將嘗試找到在這個高度或以上的最長連…

軟件測試相關介紹

什么是軟件測試&#xff1f; 軟件測試&#xff1a;使用技術手段驗證軟件是否滿足使用需求 軟件測試是指通過運行、評估和驗證軟件系統的過程&#xff0c;以確定其是否滿足預期的需求和質量標準。它是軟件開發生命周期中的一個重要環節&#xff0c;旨在發現和修復潛在的缺陷和…

前端錯誤 “TypeError Cannot read properties of undefined (reading ‘xxx‘)

前端錯誤 “TypeError: Cannot read properties of undefined (reading ‘xxx‘) 原因分析及解決 情況一&#xff1a; 出現該錯誤的原因是因為你花括號中的某些屬性未定義。極大可能是因為你寫錯了屬性名稱 情況二&#xff1a; 異步請求獲取數據時&#xff0c;語句可能寫錯&…