揹包模型 寵物小精靈之收服

2021-10-05 18:18:40 字數 1448 閱讀 1069

寵物小精靈是一部講述小智和他的搭檔皮卡丘一起冒險的故事。

一天,小智和皮卡丘來到了小精靈狩獵場,裡面有很多珍貴的野生寵物小精靈。

小智也想收服其中的一些小精靈。

然而,野生的小精靈並不那麼容易被收服。

對於每乙個野生小精靈而言,小智可能需要使用很多個精靈球才能收服它,而在收服過程中,野生小精靈也會對皮卡丘造成一定的傷害(從而減少皮卡丘的體力)。

當皮卡丘的體力小於等於0時,小智就必須結束狩獵(因為他需要給皮卡丘療傷),而使得皮卡丘體力小於等於0的野生小精靈也不會被小智收服。

當小智的精靈球用完時,狩獵也宣告結束。

我們假設小智遇到野生小精靈時有兩個選擇:收服它,或者離開它。

如果小智選擇了收服,那麼一定會扔出能夠收服該小精靈的精靈球,而皮卡丘也一定會受到相應的傷害;如果選擇離開它,那麼小智不會損失精靈球,皮卡丘也不會損失體力。

小智的目標有兩個:主要目標是收服盡可能多的野生小精靈;如果可以收服的小精靈數量一樣,小智希望皮卡丘受到的傷害越小(剩餘體力越大),因為他們還要繼續冒險。

現在已知小智的精靈球數量和皮卡丘的初始體力,已知每乙個小精靈需要的用於收服的精靈球數目和它在被收服過程中會對皮卡丘造成的傷害數目。

請問,小智該如何選擇收服哪些小精靈以達到他的目標呢?

輸入格式

輸入資料的第一行包含三個整數:n,m,k,分別代表小智的精靈球數量、皮卡丘初始的體力值、野生小精靈的數量。

之後的k行,每一行代表乙個野生小精靈,包括兩個整數:收服該小精靈需要的精靈球的數量,以及收服過程中對皮卡丘造成的傷害。

輸出格式

輸出為一行,包含兩個整數:c,r,分別表示最多收服c個小精靈,以及收服c個小精靈時皮卡丘的剩餘體力值最多為r。

資料範圍

000輸出樣例1:

3 30

輸入樣例2:

10 100 5

8 110

12 10

20 10

5 200

1 110

輸出樣例2:

0 100

#include

using

namespace std;

const

int n =

1010

, m =

510;

int f[n]

[m];

int v1, v2, n;

intmain()

cout << f[v1]

[v2 -1]

<<

' ';

int k = v2 -1;

while

(k >

0&& f[v1]

[k -1]

== f[v1]

[v2 -1]

) k --

; cout << v2 - k << endl;

return0;

}

寵物小精靈之收服

poj 4978 有兩個限制,小智的精靈球和皮卡丘的體力值,所以建乙個二維陣列來列舉各個精靈球和體力值。每一次判斷一下是不是比全域性最大值大。然後更新一 力值。剛開始沒有搞清楚應該正著迴圈還是倒著迴圈,總是寫不對。其實先仔細想想還是挺好寫的。include include include inclu...

寵物小精靈之收服

寵物小精靈是一部講述小智和他的搭檔皮卡丘一起冒險的故事。一天,小智和皮卡丘來到了小精靈狩獵場,裡面有很多珍貴的野生寵物小精靈。小智也想收服其中的一些小精靈。然而,野生的小精靈並不那麼容易被收服。對於每乙個野生小精靈而言,小智可能需要使用很多個精靈球才能收服它,而在收服過程中,野生小精靈也會對皮卡丘造...

1292 寵物小精靈之收服

寵物小精靈是一部講述小智和他的搭檔皮卡丘一起冒險的故事。一天,小智和皮卡丘來到了小精靈狩獵場,裡面有很多珍貴的野生寵物小精靈。小智也想收服其中的一些小精靈。然而,野生的小精靈並不那麼容易被收服。對於每乙個野生小精靈而言,小智可能需要使用很多個精靈球才能收服它,而在收服過程中,野生小精靈也會對皮卡丘造...