hdu 2570 迷障(贪心)
生活随笔
收集整理的這篇文章主要介紹了
hdu 2570 迷障(贪心)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
迷瘴
Time Limit : 2000/1000ms (Java/Other)???Memory Limit : 32768/32768K (Java/Other
Font:?Times New Roman?|?Verdana?|?Georgia
Font Size:?←?→
Problem Description
通過(guò)懸崖的yifenfei,又面臨著幽谷的考驗(yàn)——幽谷周圍瘴氣彌漫,靜的可怕,隱約可見地上堆滿了骷髏。由于此處長(zhǎng)年不見天日,導(dǎo)致空氣中布滿了毒素,一旦吸入體內(nèi),便會(huì)全身潰爛而死。
幸好yifenfei早有防備,提前備好了解藥材料(各種濃度的萬(wàn)能藥水)。現(xiàn)在只需按照配置成不同比例的濃度。
現(xiàn)已知yifenfei隨身攜帶有n種濃度的萬(wàn)能藥水,體積V都相同,濃度則分別為Pi%。并且知道,針對(duì)當(dāng)時(shí)幽谷的瘴氣情況,只需選擇部分或者全部的萬(wàn)能藥水,然后配置出濃度不大于 W%的藥水即可解毒。
現(xiàn)在的問(wèn)題是:如何配置此藥,能得到最大體積的當(dāng)前可用的解藥呢?
特別說(shuō)明:由于幽谷內(nèi)設(shè)備的限制,只允許把一種已有的藥全部混入另一種之中(即:不能出現(xiàn)對(duì)一種藥只取它的一部分這樣的操作)。
?
Input
輸入數(shù)據(jù)的第一行是一個(gè)整數(shù)C,表示測(cè)試數(shù)據(jù)的組數(shù);每組測(cè)試數(shù)據(jù)包含2行,首先一行給出三個(gè)正整數(shù)n,V,W(1<=n,V,W<=100);
接著一行是n個(gè)整數(shù),表示n種藥水的濃度Pi%(1<=Pi<=100)。
Output
對(duì)于每組測(cè)試數(shù)據(jù),請(qǐng)輸出一個(gè)整數(shù)和一個(gè)浮點(diǎn)數(shù);其中整數(shù)表示解藥的最大體積,浮點(diǎn)數(shù)表示解藥的濃度(四舍五入保留2位小數(shù));
如果不能配出滿足要求的的解藥,則請(qǐng)輸出0 0.00。
Sample Input
3 1 100 10 100 2 100 24 20 30 3 100 24 20 20 30Sample Output
0 0.00 100 0.20 300 0.23 這個(gè)題的思想很簡(jiǎn)單,就是先把藥水濃度從小到大排序,然后從最小濃度開始,比較混合以后的藥水濃度與題目要求的濃度,。如果小于要求濃度,求 出新的濃度,否則,跳出循環(huán),輸出混合后的濃度即可。 參考代碼:#include<stdio.h> #include<algorithm> using namespace std; int main() {int T, n, a[1005], v, w;scanf("%d",&T);while(T--){scanf("%d%d%d",&n,&v,&w);for(int i = 0; i < n; i++)scanf("%d",&a[i]);sort(a, a+n);double ans = 0; //濃度int V = 0; //最終體積for(int i = 0; i < n; i++){if(ans * V + v * a[i] <= w * (V + v)){ans = (ans * V + v * a[i]) / (V + v);V += v;}elsebreak;}printf("%d %.2lf\n",V, ans/100);}return 0; }總結(jié)
以上是生活随笔為你收集整理的hdu 2570 迷障(贪心)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 解密OpenShift内部通信网络
- 下一篇: hdu 1800 Flying to