迷瘴 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic PRoblem Description
通過懸崖的yifenfei,又面臨著幽谷的考驗(yàn)—— 幽谷周圍瘴氣彌漫,靜的可怕,隱約可見地上堆滿了骷髏。由于此處長(zhǎng)年不見天日,導(dǎo)致空氣中布滿了毒素,一旦吸入體內(nèi),便會(huì)全身潰爛而死。 幸好yifenfei早有防備,提前備好了解藥材料(各種濃度的萬能藥水)。現(xiàn)在只需按照配置成不同比例的濃度。 現(xiàn)已知yifenfei隨身攜帶有n種濃度的萬能藥水,體積V都相同,濃度則分別為Pi%。并且知道,針對(duì)當(dāng)時(shí)幽谷的瘴氣情況,只需選擇部分或者全部的萬能藥水,然后配置出濃度不大于 W%的藥水即可解毒。 現(xiàn)在的問題是:如何配置此藥,能得到最大體積的當(dāng)前可用的解藥呢? 特別說明:由于幽谷內(nèi)設(shè)備的限制,只允許把一種已有的藥全部混入另一種之中(即:不能出現(xiàn)對(duì)一種藥只取它的一部分這樣的操作)。 提示:多種藥水混合后的濃度=(濃度1*體積1+濃度2*體積2+……)/(體積和)
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。 Example Input
3 1 100 10 100 2 100 24 20 30 3 100 24 20 20 30 Example Output
0 0.00 100 0.20 300 0.23
#include <stdio.h>#include <stdlib.h>int main(){ int i,j,k; int c,n,v,w; int p[101]; scanf("%d",&c); while(c--){ double sump = 0; scanf("%d %d %d",&n,&v,&w); for(i=0; i<n; i++) scanf("%d",&p[i]); for(i=0; i<n-1; i++){//從小到大拍個(gè)序,哪天我也要用qsort快排函數(shù) 哼~ for(j=0; j<n-i-1; j++){ if(p[j]>p[j+1]){ k = p[j]; p[j] = p[j+1]; p[j+1] = k; } } } if(p[0]>w)//當(dāng)最小的濃度比w還大,那肯定配不出來了 printf("0 0.00/n"); else{ for(i=0; i<n; i++){//這個(gè)是數(shù)學(xué)函數(shù),把v約掉 if((sump+p[i])/(i+1)<=w) sump += p[i];//sump用來存儲(chǔ)之前的已經(jīng)加進(jìn)去濃度的和 else break; } sump /= i; printf("%d %.2lf/n",v*i,sump/100); } } return 0;}這個(gè)題確實(shí)不算難,不過自己做這題卻花了好多時(shí)間,想想真是羞死了 (還有人說這題水的不能再水了~ヾ(?`Д′?)
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注