vjudge題庫A A 分組揹包 上公升子串行

2022-03-25 05:15:15 字數 1042 閱讀 6972

21

3題目大意理解》

谷歌好評

一堆n根木棍。每個棒的長度和重量是預先已知的。這些木棒將由木工機械一一加工。機器需要準備一些時間(稱為準備時間)來準備處理木棍。設定時間與清潔操作以及更換機器中的工具和形狀有關。木工機的設定時間如下:

(a)第乙個木棍的準備時間為1分鐘。

(b)在處理長度為l和重量為w的棒之後,如果l <= l』並且w <= w』,則機器將不需要設定長度為l』和重量為w』的棒的設定時間。否則,將需要1分鐘進行設定。

您將找到處理給定的n根木棍的最短準備時間。例如,如果您有五根長度和重量對分別為(9,4),(2,5),(1、2),(5、3)和(4,1)的搖桿,則最小設定時間應該是2分鐘,因為有對(4,1),(5,3),(9,4),(1,2),(2,5)對的序列。

輸入值輸入包含t個測試用例。在輸入檔案的第一行中給出了測試用例的數量(t)。每個測試用例由兩行組成:第一行具有整數n,1 <= n <= 5000,代表測試例中木棍的數量,第二行包含2n個正整數l1,w1,l2, w2,…,ln,wn,每個大小最大為10000,其中li和wi分別是第i個木棍的長度和重量。 2n個整數由乙個或多個空格分隔。

輸出量輸出應包含以分鐘為單位的最短建立時間,每行一條。

第一開始想的當然是要如何排序,有l和w兩個量開兩個陣列分開算的話,中間就會漏掉太多情況。 所以和最初的揹包有些像,可以先固定l,然後比較w,(嗅到了一絲板子的香氣),所以—>let us see see

#include #include #include #include #include using namespace std;

const int maxn=5000+5;

int t,n,ans1,f[maxn];

struct senoritaa[maxn];

bool comp1(senorita a,senorita b) {

if(a.l==b.l) return a.w

轟!!6.27:最近memset初始化總是寫成memset(vis,0,sizeof(0))//要注意

通天之分組揹包 分組揹包

本人水平有限,題解不到為處,請多多諒解 本蒟蒻謝謝大家 題目 傳送門 分組揹包的模板 偽 1 for int i 1 i 組數 i 6 7 直接套模板即可。code 1 include2 pragma gcc optimize 3 3const int n 1e5 10 4 using namesp...

混合揹包 分組揹包

啥是混合揹包呢,就是包含01揹包,完全揹包,多重揹包。有n件物品,揹包承重最大為m,w i 代表重量,v i 代表價值,s i 代表種類。s i 1,可用1次,s i 0,可用無限次,s i 0,可用s i 次.解法 見 const int maxn 1e4 5 int n,m,dp m 1 w n...

揹包問題克星 分組揹包

有n件物品,告訴你這n件物品的重量以及價值,將這些物品劃分為k組,每組中的物品互相衝突,最多選一件,求解將哪些物品裝入揹包可使這些物品的費用綜合不超過揹包的容量,且價值總和最大。演算法 首先判斷乙個分組當中的一件物品,同01揹包一樣,此物品存在兩種狀態,取與不取,若取此物品,則繼續判斷下一組的第一件...