T6题解

简单题,不多讲
计数题,就是将name哈希一下,最后找出值最大的(相等按ASCLL码小的来输出)
提前将name排序(根据ASCLL大小)字符串的hash用 m a p map 存,插入、查询 O ( l o g n ) O(logn) ,最后找最小的。
qwq
差不多PJT1的难度
C o d e \color{blue}Code

# include <bits/stdc++.h>
using namespace std;
map<string,int>hashi;
int score[100];
string name[100];
int n,m;
int id(string a) 
{
	int tot=0;
	for(int i=0;i<a.size();i++) 
	{
		tot+=int(a[i]) ;
	}
	return tot;
}
bool comp(const string &a,const string &b) 
{
	return id(a)<id(b) ;
}
string sub(string a,int l,int r) 
{
	string ans="";
	for(int i=l;i<=r;i++) 
	{
		ans+=a[i];
	}
	return ans;
}
int main(void) 
{
	cin >> n;
	for(int i=1;i<=n;i++) 
	{
		cin >> name[i];
	}
	sort(name+1,name+n+1,comp) ;
	for(int i=1;i<=n;i++) 
	{
		hashi[name[i]]=i;
		score[i]=0;
	}
	cin >> m;
	getchar();
	for(int i=1;i<=m;i++) 
	{
		string s;
		getline(cin,s) ;
		int w=s.find(' ');
		string w1=sub(s,0,w-1) ;
		int _w=s.find(' ',w+1);
		string w2=sub(s,w+1,_w-1) ;
		if(w2=="I") 
		{

			score[hashi[w1]]++;
		}

		else
		{
			score[hashi[w2]]++;

		}
	}
	
	string ans="";
	int maxl=INT_MIN;
	for(int i=1;i<=n;i++) 
	{
		if(score[i]>maxl) 
		{
			maxl=score[i];
			ans=name[i];
		}
	}
	cout<<ans<<endl;
	return 0;

}

发布了29 篇原创文章 · 获赞 39 · 访问量 6686

猜你喜欢

转载自blog.csdn.net/woshidalaocxy/article/details/105037088