hdu 2570 迷障(贪心)
生活随笔
收集整理的這篇文章主要介紹了
hdu 2570 迷障(贪心)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
迷瘴
Time Limit : 2000/1000ms (Java/Other)???Memory Limit : 32768/32768K (Java/Other
Font:?Times New Roman?|?Verdana?|?Georgia
Font Size:?←?→
Problem Description
通過懸崖的yifenfei,又面臨著幽谷的考驗——幽谷周圍瘴氣彌漫,靜的可怕,隱約可見地上堆滿了骷髏。由于此處長年不見天日,導致空氣中布滿了毒素,一旦吸入體內,便會全身潰爛而死。
幸好yifenfei早有防備,提前備好了解藥材料(各種濃度的萬能藥水)。現在只需按照配置成不同比例的濃度。
現已知yifenfei隨身攜帶有n種濃度的萬能藥水,體積V都相同,濃度則分別為Pi%。并且知道,針對當時幽谷的瘴氣情況,只需選擇部分或者全部的萬能藥水,然后配置出濃度不大于 W%的藥水即可解毒。
現在的問題是:如何配置此藥,能得到最大體積的當前可用的解藥呢?
特別說明:由于幽谷內設備的限制,只允許把一種已有的藥全部混入另一種之中(即:不能出現對一種藥只取它的一部分這樣的操作)。
?
Input
輸入數據的第一行是一個整數C,表示測試數據的組數;每組測試數據包含2行,首先一行給出三個正整數n,V,W(1<=n,V,W<=100);
接著一行是n個整數,表示n種藥水的濃度Pi%(1<=Pi<=100)。
Output
對于每組測試數據,請輸出一個整數和一個浮點數;其中整數表示解藥的最大體積,浮點數表示解藥的濃度(四舍五入保留2位小數);
如果不能配出滿足要求的的解藥,則請輸出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 這個題的思想很簡單,就是先把藥水濃度從小到大排序,然后從最小濃度開始,比較混合以后的藥水濃度與題目要求的濃度,。如果小于要求濃度,求 出新的濃度,否則,跳出循環,輸出混合后的濃度即可。 參考代碼:#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; }總結
以上是生活随笔為你收集整理的hdu 2570 迷障(贪心)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解密OpenShift内部通信网络
- 下一篇: hdu 1800 Flying to