全部TLE求助
查看原帖
全部TLE求助
1059639
_is_laofang_楼主2024/8/30 20:29
#include<bits/stdc++.h>
#define len strlen(g[0])
using namespace std;
int n;
char g[35][35];
struct ode{
	int d,c;
	string h;
	ode(){
		h="00";
		c=0;
	}
}node[305];
map<string,int>mp;
vector<string>v;
void init(){
	for(int i=0;i<256;i++){
		node[i].d=i;
		int j=i;
		string h;
		do{
			char c;
			if(j%16<=9)c=char('0'+j%16);
			else c=char('A'+j%16-10);
			h+=c;
			j%=16;
		}while(j);
		if(h.size()==1)node[i].h[1]=h[0];
		else{
			node[i].h[0]=h[1];
			node[i].h[1]=h[0];
		}
	}
}
char gh(string h){
	int idx=-1,mn=1e9,c=mp[h];
	for(int i=0;i<v.size();i++)
		if(mn>abs(c-mp[v[i]])){
			mn=abs(c-mp[v[i]]);
			idx=i;
		}
	if(idx<=9)return char('0'+idx);
	else return char('A'+idx-10);
}
bool cmp(ode a,ode b){
	return (a.c==b.c?a.d<b.d:a.c>b.c);
}
int main(){
	init();
	cin>>n;
	for(int i=0;i<n;i++)cin>>g[i];
	for(int i=0;i<n;i++)
		for(int j=0;j<len/2;j++){
			string h;
			h+=g[i][j*2];
			h+=g[i][j*2+1];
			node[mp[h]].c++;
		}
	sort(node,node+300,cmp);
	for(int i=0;i<16;i++){
		cout<<node[i].h;
		v.push_back(node[i].h);
	}
	cout<<endl;
	for(int i=0;i<n;i++){
		for(int j=0;j<len/2;j++){
			string h;
			h+=g[i][j*2];
			h+=g[i][j*2+1];
			cout<<gh(h);
		}
		cout<<endl;
	}
	return 0;
}
2024/8/30 20:29
加载中...