http://acm.hdu.edu.cn/showPRoblem.php?pid=6015
这是BC的一道A题,真的,我在赛场时我理解出现了偏差,我以为是逃过2堂课后上一堂课之后就还可以继续逃。导致这题花15分钟才做出…………
其实,题目很简单,就是map的应用罢了,就是用2个map存一下每种课所对应的最大价值和第二大价值即可
#include <iostream>#define maxs 202020#define mme(i,j) memset(i,j,sizeof(i))#include <string>#include <map>using namespace std;map<string,int>mp1,mp2;string str;int val;int main(){ int t; cin>>t; while(t--) { mp1.clear(); mp2.clear(); int n; cin>>n; for(int i=0;i<n;i++) { cin>>str>>val; if(mp1[str]<val){ mp2[str]=mp1[str]; mp1[str]=val; } else if(mp2[str]<val){ mp2[str]=val; } } int ans=0; map<string,int>::iterator it; for(it=mp1.begin();it!=mp1.end();it++){ ans+=it->second; } for(it=mp2.begin();it!=mp2.end();it++){ ans+=it->second; } cout<<ans<<endl; } return 0;}新闻热点
疑难解答