kkksc03 的大學生活非常的頹廢,平時根本不學習。但是,臨近期末考試,他必須要開始抱佛腳,以求不掛科。
這次期末考試,kkksc03 需要考 44 科。因此要開始刷習題集,每科都有乙個習題集,分別有 s_1,s_2,s_3,s_4s1,s2,s3,s4道題目,完成每道題目需要一些時間,可能不等(a_1,a_2,\ldots,a_a1,a2,…,as1,b_1,b_2,\ldots,b_b1,b2,…,bs2,c_1,c_2,\ldots,c_c1,c2,…,cs3,d_1,d_2,\ldots,d_d1,d2,…,ds4)。
kkksc03 有乙個能力,他的左右兩個大腦可以同時計算 22 道不同的題目,但是僅限於同一科。因此,kkksc03 必須一科一科的複習。
由於 kkksc03 還急著去處理洛谷的 bug,因此他希望盡快把事情做完,所以他希望知道能夠完成複習的最短時間。
本題包含 55 行資料:第 11 行,為四個正整數 s_1,s_2,s_3,s_4s1,s2,s3,s4。
第 22 行,為 a_1,a_2,\ldots,a_a1,a2,…,as1 共 s_1s1 個數,表示第一科習題集每道題目所消耗的時間。
第 33 行,為 b_1,b_2,\ldots,b_b1,b2,…,bs2 共 s_2s2 個數。
第 44 行,為 c_1,c_2,\ldots,c_c1,c2,…,cs3 共 s_3s3 個數。
第 55 行,為 d_1,d_2,\ldots,d_d1,d2,…,ds4 共 s_4s4 個數,意思均同上。
輸出一行,為複習完畢最短時間。
輸入 #1複製
1 2 1 3輸出 #1複製54 3
62 4 3
201\leq s_1,s_2,s_3,s_4\leq 201≤s1,s2,s3,s4≤20。
1\leq a_1,a_2,\ldots,a_,b_1,b_2,\ldots,b_,c_1,c_2,\ldots,c_,d_1,d_2,\ldots,d_\leq601≤a1,a2,…,as1,b1,b2,…,bs2,c1,c2,…,cs3,d1,d2,…,ds4≤60。
分析:這題一眼看過去,貪心,先用sort排序,設定兩個值sum1,sum2,然後盡量讓sum1與sum2相差較小,從最後乙個開始,加入sum1,然後倒數第二個加入sum2,然後判斷sum1和sum2誰小,小的那個加倒數第三個,再判斷sum1和sum2的大小,保證每次都加入到較小者,讓他們平等
上**:
#include#includeusing namespace std;
int s1,s2,s3,s4;
int a[25],b[25],c[25],d[25];
int ans;
int calca();
int calcb();
int calcc();
int calcd();
int main()
left+=t[ss][num];
dfs(ss,num+1);
left-=t[ss][num];
right+=t[ss][num];
dfs(ss,num+1);
right-=t[ss][num];
return ;
}
洛谷 P2392 kkksc03考前臨時抱佛腳
因為資料的範圍不大,可以直接的搜尋,也可以使用01揹包解題對於乙個問題,要麼加在左腦,要麼加在右腦 搜尋所有這樣的組合,選取左右腦中最大的,所有組合最小的時間就是解該科目問題的最短時間。再把四科的時間加起來就是答案。沒有使用任何的剪枝也能過 include include include defin...
洛谷 P2392 kkksc03考前臨時抱佛腳
kkksc03的大學生活非常的頹廢,平時根本不學習。但是,臨近期末考試,他必須要開始抱佛腳,以求不掛科。這次期末考試,kkksc03需要考4科。因此要開始刷習題集,每科都有乙個習題集,分別有s1,s2,s3,s4道題目,完成每道題目需要一些時間,可能不等 a1.as1,b1.bs2,c1.cs3,d...
P2392kkksc03考前臨時抱佛腳
一.題目描述 二.解題思路 剛開始一直有個錯覺,以為左右腦做個貪心就可以了,一交全wa,不信,再交一邊,又全wa,然後我突然想到了以前學dp的時候,做過乙個類似於求解陣列分成兩部分求和最小題目,這個應該就是那個題目的變形,然後我就開始上模板了,一頓cv,交上去莫名ac。三.實現 1 include ...