【Map的使用】为什么成都的时间和重庆不一样! @华为Heat-1

记票统计
描述:

模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用“A”、”B”、”C”、”D”表示,选举时开始计票, 若输入的不是“A”、”B”、”C”、”D”则视为无效票。选举结束后获取各个候选人的得票数以及无效票的个数,输出结果以添加候选人的顺序进行顺序输出,最后一行为无效的数量。同时getVoteResult命令为结束命令。

运行时间限制:无限制
内存限制:无限制
输入:

输入为多行形式输入,每一行为一条命令。输入的命令只会是有效命令不会有非法命令,但可能存在非法的投票,上面已经描述了。

添加候选人的命令如下:addCandidate为命令 xx1为候选人

addCandidate xx1

投票的命令如下:vote为命令 xx1为候选人的字符串

vote xx1

统计投票的命令如下:getVoteResult为命令

getVoteResult

输出:

输出结果以添加候选人的顺序进行顺序输出,最后一行为无效的数量。

样例输入:
addCandidate xx1
addCandidate xx2
addCandidate xx3
addCandidate xx4
addCandidate xx5
addCandidate xx6
vote xx1
vote xx3
vote xx4
vote xx1
vote xx2
vote xx7
vote xx4
vote xx5
vote xx3
vote xx2
vote xx1
vote xx7
getVoteResult
样例输出:
xx1 3
xx2 2
xx3 2
xx4 2
xx5 1
xx6 0
2
  

这场是ZoeCUR的比赛Heat1,吾辈协力下完成的代码

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <cstdlib>
#include <string>
#include <map>
using namespace std;

int main()
{
	int invalid=0;
	map<string,int> cad;
	string temp;
	string name;
	string add="addCandidate";
	string vot="vote";
	string get="getVoteResult";
	while(cin>>temp)
	{
		if(temp==add)
		{
			cin>>name;
			cad.insert(pair<string,int>(name,0));
		}
		if(temp==vot)
		{
			cin>>name;
			map<string,int>::iterator it;
			it=cad.find(name);
			if(cad.count(name)==0)invalid++;
			else it->second ++;
		}
		if(temp==get)
		{
			map<string,int>::iterator it;
			for(it=cad.begin();it!=cad.end();++it)
			cout<<it->first<<" "<<it->second<<endl;
			cout<<invalid;
			return 0;
		}
	}
}


再贴个独角兽那道题~

来自星星的都教授除了所有感官比地球人高出七倍,始终容颜不老以外,还拥有一项在地球人看来特别神奇的能力,他会瞬间(0.00000000001s以内)按照他的规则比较地球人熟悉的两个十进制数字的大小,他比较的规则如下:   
1、将要比较的两个数字分别转换成二进制数字;   
2、计算两个二进制数字中1的个数,个数多的数字为两者中的大者;   
3、负数按照其绝对值进行比较;   
请利用地球人发明的计算机程序逼近都教授的特异功能,实现时可以有以下约束:   
1、输入数据为范围在-32768到32768(地球人的十进制世界)之间的任意两个数字;   
2、如果经过比较后2个数相等,输出为0,如果不相等,输出最大值。如果输入非法,输出-1

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cstdlib>
#include <string>
using namespace std;
double cmp (const void * a, const void * b)
{
  return ( *(double*)a - *(double*)b );
}

int main()
{
	int num=0;
	scanf("%f",&num);
	double len[40];
	for(int i=0;i<num;i++)
	{
		scanf("%f",&len[i]);
	}
	qsort(len,num,sizeof(double),cmp);
	double flag=0;
	for(int j=0;j<num;j++)
	{
		if(flag==0) flag=len[j];
		else if(flag==len[j]) flag=0.0;
		else
		{
			printf("%lld",flag);
			return 0;	 
		}
	}
	printf("-1");
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖果天王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值