標籤:ges 凍結 不能 ret ace pac 表示 大於 技術分享
我要拿走你的蠟燭
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 0 Accepted Submission(s): 0
Problem DescriptionDarkrai最近喜歡玩《爐石傳說》,他在一局比賽中使用了吉安娜英雄,選擇了冰法套牌。
爐石傳說遊戲的目的是使對方英雄的生命值降低到0點及0點以下,誰先做到誰就獲得勝利。
爐石傳說有一個規則限制是法力水晶,每回合玩家會有一定的法力水晶(本題目中全部看作10個),每使用一張卡牌,會消耗卡牌左上方的數位法力水晶,法力水晶不夠即無法使用。
本題目中涉及到4張卡牌,分別是:火球術、寒冰箭、狗頭人地蔔師、進化的狗頭人,其中——
火球術——花費4個法力水晶,可以造成6點傷害。
寒冰箭——花費2個法力水晶,可以造成3點傷害(本題目中,不必考慮凍結效果)。
狗頭人地蔔師——花費2個法力水晶,使用後,你會召喚一個狗頭人地蔔師,然後接下來你使用的所有法術(火球術、寒冰箭)的傷害值會+1。(加成效果可以疊加,比如當你召喚2個狗頭人地蔔師後,這個傷害值會+2)。
進化的狗頭人——花費4個法力水晶,效果類比狗頭人地蔔師,不過是使傷害值+2(同樣可以疊加)。
現在,他在遊戲中被人逼到了類似這個局面!他只剩下1滴血,且場上沒有任何隨從,如果這一回合他不能打敗對手,下一回合就一定會被對手擊敗了!
現在,請聰明的你幫他算一下——他是否能打敗對手呢?
注1:狗頭人地蔔師和進化的狗頭人的效果可以疊加。
注2:本題目中,不考慮隨從攻擊,不考慮英雄技能,也不考慮實際遊戲中每種卡牌只有2張的限制(換句話說,本題目中每種卡牌張數可能大於2張),只考慮如上所述4種卡牌。Input輸入資料第一行是一個正整數T(T<=200),表示測試資料的組數。
接下來T行,每行2個正整數n(<=10), m(<=30),n表示Darkrai的手牌數,m表示對手的生命值。
接下來n行,每行一個字串,"Fire"代表一張火球術,"Ice"代表一張寒冰箭,"Dog"代表一張狗頭人地蔔師,"Evolved"代表一張進化的狗頭人。Output對於每組資料,輸出一行答案。
如果Darkrai可以擊敗對手,輸出"Yes",否則輸出"No"。
Sample Input11 6Fire
Sample OutputYes解法:暴力組合,界限是花費等於10和攻擊力大於等於m就判斷Yes
#include<bits/stdc++.h>using namespace std;map<string,int>q;int main(){ int t; cin>>t; while(t--) { q.clear(); int n,m; cin>>n>>m; for(int i=1; i<=n; i++) { string s; cin>>s; q[s]++; } int flag=0; for(int i=0;i<=10;i++) { for(int j=0;j<=10;j++) { for(int y=0;y<=10;y++) { for(int z=0;z<=10;z++) { if(i<=q["Dog"]&&j<=q["Evolved"]&&y<=q["Fire"]&&z<=q["Ice"]) { if(i*2+4*j+4*y+z*2<=10) { int sum=0; int sum1=1*i+j*2; sum=(6+sum1)*y+(3+sum1)*z; if(sum>=m) { // cout<<"Yes"<<endl; flag=1; break; } } } } } } } if(flag==0) { cout<<"No"<<endl; } else { cout<<"Yes"<<endl; } } return 0;}
杭州電子科技大學程式設計競賽(2016’12)- 網路同步賽 1004