社区讨论

0分,但样例过了,求问大佬哪有问题

P3405[USACO16DEC] Cities and States S参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lo140f5x
此快照首次捕获于
2023/10/22 14:50
2 年前
此快照最后确认于
2023/11/02 14:21
2 年前
查看原帖
CPP
#include<iostream>
#include<cstring>
#include<vector>
using namespace std;

const int mod=2333,base=130;
vector <string> v[mod+2];
int ans=0;

void insert(string x)
{
	int tmp=0;
	for(int i=0;i<4;i++)
	{
		tmp=tmp*base+x[i];
	}
	
	int hash=tmp%mod;
	for(int i=0;i<v[hash].size();i++)
	{
		if(v[hash][i]==x) 
		{
			ans++;
			return;
		}
	} 
	//如果倒过来的没有,就把原先的放进来 
	char r[12];
	r[0]=x[2];
	r[1]=x[3];
	r[2]=x[0];
	r[3]=x[1];
	
	int tmp1=0;
	for(int i=0;i<4;i++)
	{
		tmp1=tmp1*base+r[i];
	}
	int hash1=tmp1%mod;
	v[hash1].push_back(r);
}

int main()
{
	char a[12],b[12],c[12];
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a>>b; //怎么把a的前两位和b合并成一个字符串
		if((a[0]!=b[0])||(a[1]!=b[1]))
		{
			c[0]=b[0]; 
			c[1]=b[1];
			c[2]=a[0]; 
			c[3]=a[1];
			//cout<<c<<endl;
			insert(c);
		}		
	}
	
	cout<<ans;
	
	return 0;
} 

回复

0 条回复,欢迎继续交流。

正在加载回复...