Civil War "开启时代杯"湘潭市第二届大学生程序设计大赛 优先队列多条件判断
2012-07-20 21:02
375 查看
战争即和平,自由即奴役,无知即力量。 ——乔治.奥威尔 历史书上说,自从统治者Big Brother去世以后,大洋国就陷入了无休止的内战中,随时都可能有新的武装势力出现,随时都可能有战争发生。奇怪的是,每次战争都是在当前国内战斗力最强大的两股势力间进行,我们可以把每股武装势力的战斗力量化成一个值,每次战争都是在当前战斗力值最高的两股势力间进行。如果有多支势力战斗力值相同,则名字字典序大的在前(见下面第二组样例)。一场战争结束后,战斗力稍弱的那方被消灭,另一方也元气大伤,战斗力减弱为两支武装的战斗力之差。如果发生战争的两方战斗力相同,则他们会同归于尽。 历史书上详细记录了该段时期的事件,记录分为两种格式: 1) New name value 其中name和value是变量,表示一个名字叫做name,战斗力为value的新势力出现 2) Fight 表示在当前最强的两股势力间发生了战争 现在请你根据书上记录,计算出每场战争以后分别导致哪支(或哪两支)势力被消灭。 输入 输入的第一行包含一个整数T (T ≤ 15),表示共有T组数据。接下来每组数据的第一行是一个整数N (N ≤ 50000),表示有N条记录。接下来N行,每行表示一条记录,记录的格式如上所述。输入保证每股势力的名字都不相同,势力的名字仅包含小写字母,长度不超过20。战斗力值为不超过10000的正整数。保证当战争发生时至少有两支势力存在。 输出 对每组数据,输出一行“Case X:”作为开头,此处X为从1开始的编号。注意首字母C为大写,在“Case”和编号X之间有一个空格,在编号X后面有一个冒号。然后对每条Fight记录输出一行,表示被消灭的势力的名字。如果是两支势力同归于尽,则这两个名字都应该输出,字典序大的在前,两个名字之间用一个空格隔开。 样例输入 2 5 New obrien 100 New winston 199 Fight New julia 99 Fight 4 New miniluv 100 New minipax 100 New minitrue 100 Fight 样例输出 Case 1: obrien winston julia Case 2: minitrue minipax |
#include<string.h>
#include<queue>
using namespace std;
struct haha
{
char s[50];
int val;
bool operator <(const haha &a) const //第一次去尝试 二个判断 以前也没有见过
{
if(val!=a.val) return val<a.val;
else
{
if(strcmp(s,a.s)<0)
return true; //用ture 貌似用 1 会有提示影响程序
if(strcmp(s,a.s)>0)
return false;
}
}
}q,temp1,temp2;
int main()
{
int i,j,cas;
scanf("%d",&cas);
for(i=1;i<=cas;i++)
{
int n,val;
printf("Case %d:\n",i);
priority_queue<haha>duilie;//
char s[30];
scanf("%d",&n);//
while(n--)
{
scanf("%s",s);
if(s[0]=='N')
{
scanf("%s %d",q.s,&q.val);
duilie.push(q);
}
else
{
temp1=duilie.top();
duilie.pop();
temp2=duilie.top();
duilie.pop();
if(temp1.val>temp2.val)
{
printf("%s\n",temp2.s);
temp1.val-=temp2.val;
duilie.push(temp1);
}
else
if(temp1.val<temp2.val)
{
printf("%s\n",temp1.s);
temp2.val-=temp1.val;
duilie.push(temp2);
}
else
{
printf("%s %s\n",temp1.s,temp2.s);
}
}
}
}
return 0;
}
相关文章推荐
- 华中农业大学第四届程序设计大赛网络同步赛 G.Array C 线段树或者优先队列
- 2017"百度之星"程序设计大赛 - 初赛(A)今夕何夕(【判断某天是周几的板子】)
- 2017年中国大学生程序设计竞赛-中南地区赛暨第八届湘潭市大学生计算机程序设计大赛游记心得
- 2017年中国大学生程序设计竞赛-中南地区赛暨第八届湘潭市大学生计算机程序设计大赛题解&源码(A.高斯消元,D,模拟,E,前缀和,F,LCS,H,Prim算法,I,胡搞,J,树状数组)
- HDU-2017"百度之星"程序设计大赛-复赛-补题
- 2017"百度之星"程序设计大赛 - 复赛1003&&HDU 6146 Pokémon GO【数学,递推,dp】
- 第二届360杯全国大学生信息安全技术大赛部分解题思路(加密解密题)
- 第二届360杯全国大学生信息安全技术大赛部分解题思路(网络与协议)
- 第二届360杯全国大学生信息安全技术大赛部分解题思路(逆向分析)
- 河南省第二届程序设计大赛规则和要求
- 第二届360杯全国大学生信息安全技术大赛部分解题思路(WEB安全)
- 河南省第五届大学生程序设计大赛最终排名
- 15安徽省大学生程序设计大赛
- android market过滤规则研究 - 第二届 Google 暑期大学生博客分享大赛 - 2011 Android 成长篇
- 2018"百度之星"程序设计大赛 - 资格赛 A/B/E/F
- 哈理工软件学院"兆方美迪"杯第六届程序设计大赛【高年级组】--决赛 Problem D: 经商 By Assassin
- if条件判断中null,0,"",false,undefined的比较
- 2017"百度之星"程序设计大赛 - 资格赛 度度熊的王国战略
- 2017"百度之星"程序设计大赛 - 资格赛
- 2017"百度之星"程序设计大赛 - 资格赛:1003 度度熊与邪恶大魔王