老实说这道题目并不算难,,,为什么比赛的时候就总是感觉自己做不出来从而放弃了呢。。。还是要仔细看题目。。。本来以为省赛训练赛的题目一个个都是我目前没有学过的。。没想到后来自己写也A了一半。本来以为只能写签到的水题的。。。。。果然自信很重要。。。认真看题目也很重要。。。。
这道题目总的想法就是map储存两个人说的话,然后直接去遍历一遍map即可,判断函数也很好写。
#include<iostream>
#include<map>
#include<string>
#include<cstring>
#include<cctype>
#include<cmath>
using namespace std;
map<pair<char,char>,string> ma;
string a,b;
pair<char,char> pa;
int ans;
bool judge(const string&);
int main(){
ios_base::sync_with_stdio(false);
while(cin>>a){
pa.first=a[0],pa.second=a[3];
if(pa.first>pa.second)
pa.first^=pa.second^=pa.first^=pa.second;
getline(cin,b);
ma[pa]=b;
}
for(map<pair<char,char>,string>::iterator be=ma.begin();be!=ma.end();++be)
if(judge(be->second))
++ans;
cout<<floor(ans*1.0/ma.size()*100+0.5)<<"%\n";
return 0;
}
bool judge(const string& str){
bool flag=false,success=false;
for(int i=0;i<str.size();++i){
if(flag){
if('e'==tolower(str[i]))
flag=false,success=true;
else
return false;
}
else{
if('h'==tolower(str[i]))
flag=true;
}
}
return success;
}