logo AlgoBeat OnlineJudge
登录 注册

[NOIP 1998] 拼数 题解

作者: Dr_KC_Haus  ·  发布于 2026-06-03 18:52:38  ·  最后修改于 2026-06-03 20:56:46
已通过
审核员:AlgoBeat 官方账号 · 2026-06-03 20:56:46

贪心做法。

要使拼接后的整数最大,关键在于确定两个数字 的相对位置。

将任意两个数字 定义为字符串。

如果字符串拼接 ,那么 前面。

‌直接比较两种拼接方式的结果,谁大谁在前,保证局部最优进而全局最优。

#include<bits/stdc++.h>
using namespace std;
bool ans(string a,string b){return a+b>b+a;}
int main(){
	int n;
	cin>>n;
	string a[n];
	for (int i=0;i<n;i++) cin>>a[i];
	sort(a,a+n,ans);
	for (int i=0;i<n;i++)cout<<a[i];
	cout<<endl;
	return 0;
}

共 2 条评论

_ZXY_

此题应证明的是邻项交换的比较条件 ⪯ 满足是一个弱序关系

_ZXY_

请说一句“凭啥对”

登录 后即可评论。