給你n道題目,你有t的時間,每個題有乙個初始的分數ai,讓後每過1分鐘,第i道題目分值減少bi
假設你可以做出全部題目,而做乙個題i的用時是固定的常數ci,那麼請問你最多能得到多少分
(好刺激的賽制呢)
顯然是乙個dp,但是光dp還不夠,我們還要套上貪心才能最優
考慮當前已經決定做哪幾道題目,那麼用什麼順序去完成這些題目得分最高?
我們隨便考慮乙個順序x,考慮交換其中兩個題目x[j]和x[j+1]
如果保持不變,那麼損失c[x[i]]*b[x[i+1]]分,如果交換,則損失b[x[i]]*c[x[i+1]]分
比較兩者大小,若
c[x[i]]*b[x[i+1]]>
b[x[i]]*c[x[i+1]]則應該交換兩者
移項可得b[x[i]+1]/c[x[i]+1]>b[x[i]]/c[x[i]]
所以我們將所有的題目按照b[i]/c[i]從大到小排序
讓後做類似於01揹包問題的dp即可
#include
#include
#include
using
namespace
std;
struct q s[1010];
int f[3010],n,m;
inline
bool c1(q a,q b)
int score()
int main()
UVA UVA 489解題報告
這是個遊戲題,是原來上英語課時,老師喜歡出的吊死鬼的遊戲.所以遊戲規則大概也清楚.不過需要注意幾點 1.若正確答案中某個字母出現了多次,那麼只要猜中那個字母一次,就算答案中那個字母全被猜中.2.猜錯的字母如果重複,則只算錯一次.若7條命都沒了,就算失敗,全部猜中則算成功.如果沒全猜中但是還有剩餘生命...
UVa 489 劊子手遊戲
遊戲規則,計算機想乙個單詞讓你猜,你每次可以猜乙個字母,如果單詞裡有那個字母,所有該字母都會顯示出來,如果沒有那個字母 則計算機會在一副 劊子手 畫上填一筆,這幅畫一共需要7筆就能完成,因此你最多只能錯6次。注意猜乙個已經猜過的字母也算錯。在本題中,你的任務是編寫乙個 裁判 程式,輸入單詞和玩家的猜...
UVA 489 劊子手遊戲
在 劊子手法官 中,你要編寫乙個程式來評判一系列的劊子手遊戲。為每乙個遊戲中,給出謎語的答案和猜測。規則和經典遊戲一樣。關於劊子手,如下所示 1。參賽者試圖通過猜乙個字母來解開謎題。2。每次猜對時,單詞中所有匹配猜測的字元都將被 轉換 結束了。例如,如果你的猜測是 o 而單詞是 book 那麼 o ...