WUST 1627 打怪遊戲(優先佇列 bfs)

2021-08-03 14:40:21 字數 1557 閱讀 4945

time limit: 1 sec  

memory limit: 128 mb  

64bit io format: %lld

submitted: 12  

accepted: 10 [

submit][

status][

web board]

一顆樹有n個節點(編號從0到n-1),樹上每乙個節點可能有多隻怪物。 小明在0號節點,他想要清除這棵樹上所有的怪物。

他現在有atk大小的攻擊力。只有當他的攻擊力大於怪物的防禦力時,他才可以打敗該怪物。每打敗乙隻怪物,還會增加一定的攻擊力。

乙個節點可能存在著不止乙隻怪獸,你要打敗這個節點的所有怪物才能可以從這個節點通過,

請問他能不能完成這個任務?

注意:不要求一次性殺光乙個節點裡面的所有怪物。

含多組測試資料。

每組測試資料的第1行包含兩個整數n,m,分別表示這棵樹有n個節點,m只怪獸(1<=n<=1000 ,0<=m <=100)

接下來的n-1行(即第2至n行),每行兩個整數u,v,表示編號為u,v之間的節點有一條無向邊,保證不會成環。(0<=u,v接下來的1行包含乙個整數atk,表示小明的初始化攻擊力(0<=atk<=100)

接下來的m行,每行3個整數id,def,add_atk,表示在編號為id的點上,有乙隻防禦力為def的怪物,打敗後可以增加add_atk點的攻擊力。(0<=add_atk,def<=100)

對於每組測試樣例,如果小明能夠清除所有的怪物,則輸出「oh yes.」 否則,輸出「good good study,day day up.」

5 2

0 10 2

2 32 4

113 10 2

1 11 0

oh yes.

題解:

看起來好難的樣子。。其實很水,資料也比較弱很好過,稍微搜了下思路就自己寫了qwq,一遍ac,就是優先佇列的運用和bfs,如果沒怪就加乙個增加攻擊力和防禦力都為0的假怪,不打怪也要好好學習天天向上

**:#include#include#include#include#include#include#include#include#includeusing namespace std;

int p[1005][1005];

struct node

};node mon[205];//儲存怪物

int num[105];//記錄每乙個節點的怪物數目

int biao[1005][105];//記錄每乙個節點對應的怪物標號

priority_queueq;//定義優先佇列

int main()

{ int i,j,k,n,m,x,y,atk,tag;

node now;

while(scanf("%d%d",&n,&m)!=eof)

{while(!q.empty())q.pop();

memset(p,0,sizeof(p));

memset(num,0,sizeof(num));

for(i=0;i

zzuli 1627大整數減法

大整數減法 time limit 1000ms memory limit 65536k total submit 43 accepted 14 description 求兩個不超過200 位的非負整數的差。input 首先輸入乙個整數n 表示測試例項的個數。每組例項輸入兩行,每行是乙個不超過200 ...

16 2 7 識別可執行程式

16.2.7 識別可執行程式 以下幾種方法可以用來識別可執行程式 識別可執行程式最快捷的方法之一就是檢視它的訪問許可權。如果某個檔案的可執行位 x 被置位,那麼它就是乙個可執行程式。但是,如果訪問許可權由於某種原因沒有被正 確設定,那麼這種方法就不適用了。如果認為某個程式可能是乙個可執行檔案,可以試...

中位數題解 luogu P1627

給出1 n的乙個排列,統計該排列有多少個長度為奇數的連續子串行的中位數是b。中位數是指把所有元素從小到大排列後,位於中間的數。輸入格式 第一行為兩個正整數n和b,第二行為1 n的排列。輸出格式 輸出乙個整數,即中位數為b的連續子串行個數。輸入樣例1 7 4 5 7 2 4 3 1 6 輸出樣例1 資...