萌新10分priority_queue写法代码求调!!
查看原帖
萌新10分priority_queue写法代码求调!!
531223
gbk002SNake楼主2021/7/22 08:58
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
int base=97;
int cnt=0;
int mod1=19260817;
int mod2=1e9+9;

struct node
{
	int x,y;
	bool operator < (const node &b) const
	{
		if(x!=b.x)return x<b.x;
		return y<b.y;
	}
};

int has(string o)
{
	int ans=0;
	int t=o.length();
	for(int i=0;i<t;i++)
	ans=(ans*base+o[i]-'0')%mod1;
	return ans;
}

//char a[] strlen
int ha(string o)
{
	int ans=0;
	int t=o.length();
	for(int i=0;i<t;i++)
	ans=(ans*base+o[i]-'0')%mod2;
	return ans;
}
priority_queue<node>q;
signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		string a;
		node k;
		cin>>a;
		k.x=has(a);
		k.y=ha(a);
		q.push(k);
	}
	node u=q.top();
	q.pop();
	cnt++;
	while(!q.empty())
	{
		node f=q.top();
		q.pop();
		if(f.x!=u.y||f.y!=u.y)cnt++,u.x=f.x,u.y=f.y;
	}
	cout<<cnt;
} 
2021/7/22 08:58
加载中...