總時間限制:
1000ms
記憶體限制:
65536kb
描述在一門課程中,一共有n場考試。假如你在i場考試中可以答對bi
道題中的ai
道,那麼你的累計平均分定義為:100·σai
/σbi
。已知你這i場考試的答題情況,並且允許你放棄其中的k場考試,請你確定你最高能夠得到多少的累計平均分。
假設該課程一共有3門考試,你的答題情況為5/5,0/1和2/6。如果你每門都參加,你的累計平均分為100·(5+0+2)/(5+1+6)= 50分。如果你放棄第3場考試,你的累計平均分則提高到了100·(5+0)/(5+1)= 83.33 ≈ 83分。
輸入有多組測試資料,每組測試資料報括3行。
每組測試資料第一行有兩個數n和k,接下來一行有n個數ai,最後一行n個數bi。
(1 ≤ k < n ≤ 1000) (1 ≤ ai ≤ bi ≤ 1, 000, 000, 000)。
輸入的最後一行為0 0,不作處理。
輸出輸出最高的累計平均分。(四捨五入到整數)
樣例輸入
3 1樣例輸出5 0 2
5 1 6
4 21 2 7 9
5 6 7 9
0 0
83**100
最初的思路是把每一場的勝率排序,從高往底選擇前n-k個,但是有正確率為零的場次要帶入比較討論,步驟就比較繁瑣。
因此直接來個二分查詢幹。
#include usingnamespace
std;
int a[1005],b[1005
],n,k;
double ans,y[1005
];bool check(double
v) sort(y,y+n);
double sum=0
;
for(int i=n-1; i>=k; i--)
if(sum>=0)return
true
;
else
return
false;}
void
fun()
ans=left*100;}
intmain()
for(int i=0; i)
fun();
printf(
"%.0lf\n
",ans);
}return0;
}
NWPU演算法考試複習 二分查詢
描述 給定乙個單調遞增的整數序列,問某個整數是否在序列中。輸入第一行為乙個整數n,表示序列中整數的個數 第二行為n n不超過10000 個整數 第三行為乙個整數m m不超過50000 表示查詢的個數 接下來m行每行乙個整數k。輸出每個查詢的輸出佔一行,如果k在序列中,輸出yes,否則輸出no。輸入樣...
迭代二分查詢二分查詢
在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...
1128 二分 二分查詢
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述nettle最近在玩 艦 因此nettle收集了很多很多的船 這裡我們假設nettle氪了很多金,開了無數個船位 去除掉重複的船之後,還剩下n 1 n 1,000,000 種不同的船。每一艘船有乙個稀有值,任意兩艘船的稀有...