kkksc03 的大學生活非常的頹廢,平時根本不學習。但是,臨近期末考試,他必須要開始抱佛腳,以求不掛科。
這次期末考試,kkksc03 需要考 4 科。因此要開始刷習題集,每科都有乙個習題集,分別有 s1,s2,s3,s4 道題目,完成每道題目需要一些時間,可能不等(a1,a2,…,as1,b1,b2,…,bs2,c1,c2,…,cs3,d1,d2,…,ds4)。
kkksc03 有乙個能力,他的左右兩個大腦可以同時計算 2 道不同的題目,但是僅限於同一科。因此,kkksc03 必須一科一科的複習。
由於 kkksc03 還急著去處理洛谷的 bug,因此他希望盡快把事情做完,所以他希望知道能夠完成複習的最短時間。
本題包含 5 行資料:第 1 行,為四個正整數 s1,s2,s3,s4。
第 2 行,為 a1,a2,…,as1 共 s1 個數,表示第一科習題集每道題目所消耗的時間。
第 3 行,為 b1,b2,…,bs2 共 s2 個數。
第 4行,為 c1,c2,…,cs3 共 s3 個數。
第 5 行,為 d1,d2,…,ds4 共 s4 個數,意思均同上。
輸出一行,為複習完畢最短時間。
輸入樣例
1 2 1 3
54 3
62 4 3
輸出樣例1 ≤ s1,s2,s3,s4 ≤ 20。
1 ≤ a1,a2,…,as1,b1,b2,…,bs2,c1,c2,…,cs3,d1,d2…ds4 ≤ 60。
能夠完成複習的最短時間為四科所需的最短時間的總和,可以先看乙個科目,假設這個科目所需的時間為 t,那麼最佳的答案為 t/2,此時,kkksc03 的左右腦所耗的的時間差為 0,所以,我們所需要做的就是讓 kkksc03 左右腦所耗的時間差盡可能的小,我們先考慮一邊腦的耗時,此時就可以當做是揹包問題來求解了,而我們也只需要尋找當揹包大小為 t/2 時,可以得到的最大耗時,然後將 t 減去我們找到的最大耗時即為我們所需要的答案。
#include
using
namespace std;
int s[4]
,dp[
10000];
int a[4]
[50];
int ans=
0,sum=0;
intmain()
for(
int t=
0;t;t++)}
ans+
=sum-dp[sum/2]
; sum=0;
memset
(dp,0,
sizeof
(dp));
} cout
}
kkksc03考前臨時抱佛腳(洛谷 P2392)
題目背景 kkksc03的大學生活非常的頹廢,平時根本不學習。但是,臨近期末考試,他必須要開始抱佛腳,以求不掛科。題目描述 這次期末考試,kkksc03需要考4科。因此要開始刷習題集,每科都有乙個習題集,分別有s1,s2,s3,s4道題目,完成每道題目需要一些時間,可能不等 a1 as1,b1 bs...
P2392kkksc03考前臨時抱佛腳
一.題目描述 二.解題思路 剛開始一直有個錯覺,以為左右腦做個貪心就可以了,一交全wa,不信,再交一邊,又全wa,然後我突然想到了以前學dp的時候,做過乙個類似於求解陣列分成兩部分求和最小題目,這個應該就是那個題目的變形,然後我就開始上模板了,一頓cv,交上去莫名ac。三.實現 1 include ...
洛谷 1855 榨取kkksc03
洛谷2的團隊功能是其他任何oj和工具難以達到的。借助洛谷強大的伺服器資源,任何學校都可以在洛谷上零成本的搭建oj並高效率的完成訓練計畫。為什麼說是搭建oj呢?為什麼高效呢?因為,你可以上傳私有題目,團隊外別人是無法看到的。我們還能幫你們評測!你可以建立作業,給組員布置任務,檢視組員的完成情況,還可以...