这才是一篇题解真正该有的样子吧
2026-01-30 17:00:32
发布于:浙江
70阅读
0回复
0点赞
如果您没有看过题,可以通过此处前往原题链接:https://www.acgo.cn/problemset/info/21794。
关于本题难度其实很早就在 LA 群聊开了,难度由橙到蓝各不相同,大家各抒己见,最终在 1.16,Ri 老师给出了一个大家最能接受的解释 Link。
但是这并不能平息战乱,之后陆陆续续有人发帖表态,但影响力并不是很大。
后来注意到这样的一篇帖子 Link,又看到题解区里质量极其低下的题解,于是我决定试图给出一个相对严谨的证明(期末考一考完就开始写了)。
不妨将题目看作是给定若干个字符串,要求对其重新排列,使得最终字符串字典序尽可能大。
考虑临项交换。

图片说明:此处将每一个字符串变为“块”来表示,“块”的长短用于体现每个字符串不等长,颜色仅是为了区分。
如上图所示,当我们考虑交换 和 时,其余 块都是没有任何影响的,既然是要比较字典序,显然考虑 和 的字典序即可(在字符串中,+ 表示拼接)。
故易得下列代码。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 101;
int n;
string a[maxn];
int cmp(string s1, string s2) {
return s1 + s2 > s2 + s1;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
sort(a + 1, a + n + 1, cmp);
for (int i = 1; i <= n; i++) cout << a[i];
return 0;
}
个人难度:黄。
全部评论 3
笑点解析,没证传递性
2026-01-30 来自 广东
1nxnmn
2026-01-30 来自 浙江
0你已急哭
2026-01-30 来自 广东
0
话说洛谷的帖子咋没了
2026-02-01 来自 浙江
0邻项交换连绿都没有吗

2026-01-30 来自 广东
0这不是什么很难想的临项交换吧
2026-01-30 来自 浙江
0不道啊,没做过邻项交换
2026-01-30 来自 广东
0洛谷评蓝就说明邻项交换在洛谷那边是蓝吧
2026-01-30 来自 广东
1















有帮助,赞一个