Jzoj4892 最優得分

2022-05-09 16:11:09 字數 725 閱讀 6511

給你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 ...