7-119 航空公司VIP客户查询 (25分)
输入样例:
4 500
330106199010080419 499
110108198403100012 15000
120104195510156021 800
330106199010080419 1
4
120104195510156021
110108198403100012
330106199010080419
33010619901008041x
输出样例:
800
15000
1000
No Info
思路:
1. 使用map对身份证号码进行标记,就可以标记该用户的里程是多少。
2. 运行超时总结 建议使用c++的同志不要使用cin,cout.我当时用的就是cin,还使用了以下几行代码解除绑定啥的,,,,还是超时。。。。
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
卑微的我最后使用了scanf,printf。连字符串都换乘了char字符数组了。。
最后总算是AC了。
(如果有前辈使用cin,cout AC了,麻烦前辈指导一下晚辈,嘿嘿 ^ _ ^ )
AC代码:
#include<bits/stdc++.h>
using namespace std;
map<string, int> mp;
int main(){
// ios::sync_with_stdio(false);
// cin.tie(0);
// cout.tie(0);
char s[20];
int n,k,num,m;
scanf("%d%d", &n, &k);
// cin>>n>>k;
while(n--){
scanf("%s%d", s, &num);
//cin>>s>>num;
if(num<k) num=k;
mp[s]+=num;
}
scanf("%d", &m);
while(m--){
scanf("%s", s);
//cin>>s;
if(mp.find(s)!=mp.end()) printf("%d\n",mp[s]);
//cout<<mp[s]<<endl;
//else cout<<"No Info"<<endl;
else printf("No Info\n");
}
return 0;
}
欢迎大家批评改正!!!