字符串模拟,用STRING类的话会非常的简单
众所周知,Fengsensei是每天泡在图书馆的一个学霸,但是Fengsensei偶尔也会玩游戏来放松一下自己,Fengsensei最近迷上了DOTA,我们将模型简化如下,DOTA游戏分为两个阵营,天灾军团和近卫军团,Fengsensei出于奇怪的正义感每次都在近卫军团里,每次双方都会从一堆英雄中选出5名英雄来作战,每个英雄在游戏中只会出现一个,Fengsensei发现他能够知道每名英雄的战斗力,并且总是英雄战斗力之和高的一方会获胜,如果战斗力之和相等,Fengsensei所在的一方会获胜,现在,给你一个英雄的列表和近卫天灾的5名英雄,你能帮Fengsensei判断最终哪方会胜利么。
输入第一行一个整数T,代表测试数据的组数
接下来T组测试数据
每组测试数据第一行一个整数M(10<=M<100) 代表英雄的总数。
接下来M行,每行为一个字符串s和一个整数Ai(|Ai|<100),其中字符串s仅由大写字母和小写字母组成,长度不超过30,代表英雄的名字,Ai代表英雄的战斗力。
接下来一行为5个字符串s11,s12,s13,s14,s15。代表近卫军团选择的5个英雄。
接下来一行为5个字符串s21,s22,s23,s24,s25。代表天灾军团选择的5个英雄。
对于每组测试数据,输出一行,如果Fengsensei能够获胜 输出"YES",否则输出"NO"
1 10 Sharpeye -5 Rigwarl 20 Mangix 20 Bradwarden 10 Gondar 15 Zeus 5 Morphling 5 Sven 15 Slithice 15 Nortrom 5 Sharpeye Rigwarl Mangix Bradwarden Gondar Zeus Morphling Sven Slithice Nortrom
YES
#include <iostream>
#include <string>
using namespace std;
class hero
{
public:
string heroname;
int power;
};
hero pool[150];
int main()
{
int testcase;
cin>>testcase;
while(testcase--)
{
int heronum;
int nep=0,udp=0;
cin>>heronum;
for(int i=0;i<heronum;i++)
{
cin>>pool[i].heroname>>pool[i].power;
}
string ne[5];
string ud[5];
for(int i=0;i<5;i++)
{
cin>>ne[i];
}
for(int i=0;i<5;i++)
{
cin>>ud[i];
}
for(int i=0;i<5;i++)
{
for(int j=0;j<heronum;j++)
{
if(ne[i]==pool[j].heroname)
{
nep+=pool[j].power;
}
if(ud[i]==pool[j].heroname)
{
udp+=pool[j].power;
}
}
}
if(nep>=udp)
{
cout<<"YES"<<endl;
}
else
cout<<"NO"<<endl;
}
return 0;
}
1AC,然后我上课去了。。