1. 程式人生 > >51Nod1182 完美字串(stl:map)

51Nod1182 完美字串(stl:map)

這道題思路就是找到相同的字母的數量,然後排序,算出結果。

找出相同的數量,用stl中map結構最快。

排序的話用優先佇列維護。

然後map,優先佇列不會,可以看看我之前的學習stl的部落格。自我感覺stl真的很好用!STL學習總結

#include<iostream>
#include<string>
#include<map>
#include<queue>
using namespace std;
int main()
{	
	string s;
	map<char,int> a;
	cin>>s;
	for(int i=0;i<s.length();i++)
		a[s[i]]++; 
	map<char,int>::iterator it;
	priority_queue<int> q;
	for(it=a.begin();it!=a.end();it++)
	{
		q.push(it->second);
	}
	long long sum=0,i=26;
	while(!q.empty())
	{
		sum+=q.top()*i;
		i--;
		q.pop();
	}
	cout<<sum<<endl;
	return 0;
}