kkksc03考前臨時抱佛腳(洛谷 P2392)

2021-09-27 10:06:02 字數 1383 閱讀 5410

題目背景

kkksc03的大學生活非常的頹廢,平時根本不學習。但是,臨近期末考試,他必須要開始抱佛腳,以求不掛科。

題目描述

這次期末考試,kkksc03需要考4科。因此要開始刷習題集,每科都有乙個習題集,分別有s1,s2,s3,s4道題目,完成每道題目需要一些時間,可能不等(a1…as1,b1…bs2,c1…cs3,d1…ds4)。

kkksc03有乙個能力,他的左右兩個大腦可以同時計算2道不同的題目,但是僅限於同一科。因此,kkksc03必須一科一科的複習。

由於kkksc03還急著去處理洛谷的bug,因此他希望盡快把事情做完,所以他希望知道能夠完成複習的最短時間

輸入格式

本題包含5行資料:第1行,為s1,s2,s3,s4(1≤s1,s2,s3,s4≤20)

第2行,為a1…as1 共s1個數,表示第一科習題集每道題目所消耗的時間。

第3行,為b1…bs2 共s2個數,

第4行,為c1…cs3 共s3個數,

第5行,為d1…ds4 共s4個數,意思均同上。

(1≤a1…as1,b1…bs2,c1…cs3,d1…ds4≤60)

輸出格式

輸出一行,為複習完畢最短時間。

輸入 #1

1 2 1 3

54 3

62 4 3

輸出 #1

首先,這是一道假貪心,真揹包;寫了幾十行貪心**,交上去爆0,太tm無語了;

把單個科目的總時間加起來,作為單個科目最大的複習時間m,然後轉化為揹包題,求m/2的最大複習時間;還有乙個點,將一邊的腦子加到最接近一半則另一邊腦子時間就是正解

**:

#include

using

namespace std;

int s[5]

;int a[5]

[30];

int dp[

3000];

int b[5]

;int sum;

intmain()

}for

(int i=

1;i<=

4;i++)}

} sum+

=b[i]

-dp[b[i]/2

];memset

(dp,0,

sizeof

(dp));

}printf

("%d\n"

,sum)

;return0;

}

暴力列舉 kkksc03考前臨時抱佛腳

kkksc03 的大學生活非常的頹廢,平時根本不學習。但是,臨近期末考試,他必須要開始抱佛腳,以求不掛科。這次期末考試,kkksc03 需要考 4 科。因此要開始刷習題集,每科都有乙個習題集,分別有 s1,s2,s3,s4 道題目,完成每道題目需要一些時間,可能不等 a1,a2,as1,b1,b2,...

P2392kkksc03考前臨時抱佛腳

一.題目描述 二.解題思路 剛開始一直有個錯覺,以為左右腦做個貪心就可以了,一交全wa,不信,再交一邊,又全wa,然後我突然想到了以前學dp的時候,做過乙個類似於求解陣列分成兩部分求和最小題目,這個應該就是那個題目的變形,然後我就開始上模板了,一頓cv,交上去莫名ac。三.實現 1 include ...

洛谷p2392考前臨時抱佛腳(動態規劃和搜尋)

kkksc03 的大學生活非常的頹廢,平時根本不學習。但是,臨近期末考試,他必須要開始抱佛腳,以求不掛科。這次期末考試,kkksc03 需要考 4 科。因此要開始刷習題集,每科都有乙個習題集,分別有s1,s2,s3,s4 道題目,完成每道題目需要一些時間,可能不等 a1,a2,as1 b1,b2,b...