CSP-S T1 求调
  • 板块学术版
  • 楼主aYYbsYYa
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/24 22:15
  • 上次更新2023/11/2 11:31:04
查看原帖
CSP-S T1 求调
368215
aYYbsYYa楼主2023/10/24 22:15

洛谷自测是A,有道是30分

#include<bits/stdc++.h>
using namespace std;
const int N=1e4;
int n;
int a[N][N];
int b[N][N];
string c[N];
int num,ans;
map<int,int> mp;
map<string,int> Mp;

int main(){
	freopen("lock.in","r",stdin);
	freopen("lock.out","w",stdout);
	for(int i=0;i<=20;i++){
		if(i<=9) mp[i]=i;
		else mp[i]=mp[i-10];
	}
	mp[-1]=9,mp[10]=0;
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=5;j++){
			cin>>a[i][j];
		}
	}
	

		for(int m=1;m<=n;m++)
		for(int k=1;k<=5;k++)  //位数 
		for(int i=1;i<=9;i++){
			num++;
			b[num][k]=mp[a[m][k]+i];
			for(int j=1;j<=5;j++){
				if(k!=j){
					b[num][j]=a[m][j];
				}
			}
		}	//变化数 
		
		for(int m=1;m<=n;m++)
		for(int k=1;k<5;k++)  //位数 
		for(int i=1;i<=9;i++){
			num++;
			b[num][k]=mp[a[m][k]+i];
			b[num][k+1]=mp[a[m][k+1]+i];
			for(int j=1;j<=5;j++){
				if(k!=j&&k+1!=j){
					b[num][j]=a[m][j];
				}
			}
		}	//变化数 
	
	for(int i=1;i<=num;i++){
		char C[10];
		for(int j=1;j<=5;j++){
			//cout<<b[i][j]<<' ';;
			C[j]=b[i][j]+int('0');
		}
		c[i]=C;
		//cout<<c[i]<<endl;
	}
	sort(c+1,c+num+1);
	
	for(int i=1;i<=num;i++){
		Mp[c[i]]++;
		if(Mp[c[i]]==n) ans++;
	}
	cout<<ans;
	return 0;
}
/*
1
0 0 1 1 5

81

2
2 8 3 5 5
2 8 3 5 1

10
*/

2023/10/24 22:15
加载中...