模拟赛笔记(1)

1、XR0210

T1:U105209 拼数P1012 [NOIP1998 提高组] 拼数

将数字串按照 a+b>b+a 排序,如何证明全序关系?即求证:若 a+b>b+ab+c>c+b,则 a+c>c+a

证明:

a 的位数为 xb 的位数为 yc 的位数为 z,则 a+b=a10y+bb+a=b10x+a

所以 a10x1>b10y1,同理可得 b10y1>c10z1,因此 a+c>c+a

证毕。

注意是只选三个而不是全选,所以数字位数要作为第一关键字。

复制代码
 1 const int N = 1e6 + 10;
 2 string a[N];
 3 
 4 inline bool cmp1(const string &a, const string &b)
 5 {
 6     return a.size() != b.size() ? a.size() > b.size() : a + b > b + a;
 7 }
 8 inline bool cmp2(const string &a, const string &b)
 9 {
10     return a + b > b + a;
11 }
12 
13 int main()
14 {
15     int n; cin >> n;
16     for (int i = 1; i <= n; ++i) cin >> a[i];
17     sort(a + 1, a + n + 1, cmp1); sort(a + 1, a + 4, cmp2);
18     cout << a[1] << a[2] << a[3];
19     fwrite(pbuf, 1, pp - pbuf, stdout); return 0;
20 }
View Code
复制代码

To be continued...

posted @   jhqqwq  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示