列舉爐石傳說

2021-08-14 10:21:29 字數 1289 閱讀 9567

islands 最近在完一款遊戲「爐石傳說」,又名「魔獸英雄傳」。爐石傳說是一款卡牌類對戰的遊戲。遊戲是兩人對戰,總的來說,裡面的卡牌分成兩類,一類是法術牌,另一類是隨從牌(所謂隨從就是怪物)。

為了簡化問題,現在假設隨從牌的作用是召喚乙個具有一定攻擊力的怪物,法術牌的作用是給某個隨從增加一定攻擊力。隨從牌和法術牌的使用都需要消耗一定的法力值。現在 islands 有 10

點法力值,手上有 n

n 張牌(islands 最多有 1

0 張牌,否者他將會被爆牌 t_t),有些是法術牌,有些是隨從牌。islands 現在是大劣勢,他想要是利用這 10

點法力值使得召喚出來的所有隨從的攻擊力總和最高(法力值可以不用完)。注意,任何法術牌都必須使用在某個召喚出來的隨從上,也就是如果 islands 沒有召喚過隨從,他將不能使用任何法術牌。告訴 islands 他能召喚的隨從的總攻擊力最大是多少。

每組資料首先輸入乙個 n(0≤

n≤10

)表示 islands 有 n

張牌。接下來

n 行,每行輸入3

3 個整數cost(0 \le cost \le 10)co

st(0

≤cos

t≤10

),dd

d(00

0 或者 11

1),w(∣

w∣≤1

000)

。其中 costco

st表示該牌的法力值消耗,如果 d=0d=

0,表示該牌是攻擊力為 w

w 的隨從牌;如果 d=1

,表示是能給乙個隨從增加w

w 攻擊的法術牌。

輸出一行表示答案。

樣例輸入

1

1 0 100

樣例輸出 100

解題說明:最多10張牌,二話不說暴力列舉,開始過了9個樣例,what?原來是

fa-=cost[j];

if(fa<0)break;

if(d[j]==0)count++;

sum+=w[j];

這幾行**順序,錯了,當然要先進行fa>=0的操作啦。還有說用貪心的,正的好說,我要損失最少的法力,拿最高的攻擊力,但是負數有,我又不得不取的時候,這個時候,拿最少的分,拿最大的負數,這是不能通過簡單判斷實現的。此外dp可以做

#include#include#includeusing namespace std;

int cost[10],d[10],w[10];

int maxval=0;

int main()

cout<

CCF 爐石傳說

這題原本想的比較複雜,因為每次召喚隨從或隨從死亡時都要對右邊的隨從編號進行變動,然後構建了鍊錶的資料結構,但是越寫越複雜,所以馬上放棄這個思路。其實只要構建乙個結構體,結構體儲存隨從的health和attack,以及乙個flag表示隨從是否死亡。構建兩個size為8的陣列,用以儲存隨從即可。incl...

CCF爐石傳說

參考了 問題描述 爐石傳說 魔獸英雄傳 hearthstone heroes of warcraft,簡稱爐石傳說 是暴雪娛樂開發的一款集換式卡牌遊戲 如下圖所示 遊戲在乙個戰鬥棋盤上進行,由兩名玩家輪流進行操作,本題所使用的爐石傳說遊戲的簡化規則如下 玩家會控制一些角色,每個角色有自己的生命值和攻...

爐石傳說輔助

實現原理 修改遊戲檔案 注入機械人 使用 monocecil,修改 unity3d 生成的 assembly 檔案,在內部注入我們自己編寫的unity3d模組!實現細節 修改遊戲檔案 其實主要是 monocecil 的使用 通過檔名 類名 方法名,取出方法的定義 static methoddefin...