社区讨论

求修改,必关注。

B3851[GESP202306 四级] 图像压缩参与者 4已保存回复 4

讨论操作

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

当前回复
4 条
当前快照
1 份
快照标识符
@mi7j8p7u
此快照首次捕获于
2025/11/20 22:34
4 个月前
此快照最后确认于
2025/11/21 11:51
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int n,p=0,xia=0;
bool s=0;
struct rt{
	int a;
	bool b;
};
rt qi_16[530];
int z[257],f[257],shu[17]={0,16,32,48,64,80,96,112,128,144,160,176,192,208,224,240,256};
string c[23];
void k(){
	for(int i=0;i<n;i++){
		for(int j=0;j<c[i].size();j++){
			if(s==1){
				if(c[i][j]>='0'&&c[i][j]<='9') p+=c[i][j]-48;
				else p+=c[i][j]-55;
				qi_16[xia].a=p;
			//	cout<<qi_16[xia].a<<" ";
				s=0;xia++;p=0;
			}
			else{
				if(c[i][j]>='0'&&c[i][j]<='9') p=c[i][j]*16-768;
				else p=c[i][j]*16-880;
				s=1;
			}
		}
		//cout<<endl;
	}
}
void ji(int a){
	char p[2];
	int v=0;
	while(a>0){
		if(a%16>9) p[v]=a%16+55;
		else p[v]=a%16+48;
		a=a/16;v++;
	}	
	cout<<p[1]<<p[0];
}
bool fkv(int a,int b){
	return a>b;
}
int main(){
	cin>>n;
	for(int i=0;i<n;i++) cin>>c[i];
	k();
	for(int i=0;i<xia;i++) z[qi_16[i].a]++;
	for(int i=0;i<16;i++){
		int x=0;
		for(int j=0;j<256;j++){
			if(z[j]>z[x]) x=j;
		}
		ji(x);
		for(int j=0;j<xia;j++){
			if(x==qi_16[j].a&&qi_16[j].b==0){
				qi_16[j].a=i;
				qi_16[j].b=1;
			}
		}
		z[x]=-1;
	}
	cout<<endl;
	for(int i=0;i<xia;i++){
		if(qi_16[i].b==0){
			for(int j=0;j<16;j++){
				if(qi_16[i].a==shu[j]){
					qi_16[i].a=j;
				}
				else if(qi_16[i].a>shu[j]&&qi_16[i].a<shu[j+1]){
					if(shu[j+1]-qi_16[i].a>=qi_16[i].a-shu[j]) qi_16[i].a=j;
					else qi_16[i].a=j+1;
				}
			}
		}
		//cout<<qi_16[i].a<<" ";
		if(qi_16[i].a>9) cout<<char(65+qi_16[i].a-10);
		else cout<<qi_16[i].a;
		if((i+1)%(c[0].size()/2)==0) cout<<endl;
	}
	return 0;
}

回复

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

正在加载回复...