CodeForces

来源:互联网 发布:一身份证创建2个淘宝店 编辑:程序博客网 时间:2024/06/06 01:05

题意:

一个人生前学会了n个技能,每个技能还有技能等级a,死了并重生之后,技能等级会掉到a*k。如果a*k小于100的话,那么这个技能将会丢失。重生之后可以再学m个技能,如果这个技能前世学过的话就继承等级(注意是等级不小于100才可以继承),如果没有学过那么等级为0,按照字典序输出一个人重生之后身上所拥有的技能。

思路:

强烈推荐使用map容器,map的key是默认字典序排列的,连输出排序都省了,用技能名字当key,技能等级当value。还有就是a*k的精度会丢失,所以最好再加个比0.01还小的数。

#include<iostream>#include<cstring>#include<cstdio>#include<map>#define ee 1e-6using namespace std;int main(){map<string,int>ma;double n,m,k,exp;char name[38];cin>>n>>m>>k;//cout<<"nmk="<<n<<"  "<<m<<"  "<<k<<endl;for(int i=0;i<n;i++){scanf("%s %lf ",name,&exp);int temp=exp*k+ee;if(temp>=100)ma[name]=temp;}for(int i=0;i<m;i++){scanf("%s",name);if(ma[name]==0) ma[name]=0;}cout<<ma.size()<<endl;map<string,int>::iterator it;it = ma.begin();while(it != ma.end()){    cout<<it->first<<" "<<it->second<<endl;    it ++;         }return 0;}


原创粉丝点击