zoukankan      html  css  js  c++  java
  • 洛谷P1012 拼数 string

    又是大水题...

    这一题过水,令人无法接受。。。。。。

    但是如果我们不知道string的一个神奇的性质的话,就会很难受。

    我一开始手写 < 号,但是发现如果 string a 的前一部分恰好是 string b 时,就不好处。于是我跑去看题解,发现大佬们的神奇做法:

    a + b > b + a

    666啊!

    下面讲解关于string的 + 和 < 运算符:

    + : 把两个字符串拼起来。

    < : 字典序比较。

    这两组数据可以卡掉a > b

    37 3

    30 3

    然后我们就水 啊 水 啊 水 过 了

     1 #include <cstdio>
     2 #include <iostream>
     3 #include <algorithm>
     4 using namespace std;
     5 const int N = 21;
     6 bool cmp(string a, string b) {
     7     return a + b > b + a;
     8 }
     9 
    10 int main() {
    11     string a[N];
    12     int n;
    13     scanf("%d", &n);
    14     for(int i = 1; i <= n; i++) {
    15         cin >> a[i];
    16     }
    17     sort(a + 1, a + n + 1, cmp);
    18     for(int i = 1; i <= n; i++) {
    19         cout << a[i];
    20     }
    21     return 0;
    22 }
    AC代码:
  • 相关阅读:
    数列分段 II
    Best Cow Fences
    愤怒的牛
    linux 查看文件
    糖果传递
    BL刀片更换主板设置raid
    glance启停
    depot制作
    刀片服务器密码过期, console无法登录解决方案
    DP无法删除失效的多路径链路方法
  • 原文地址:https://www.cnblogs.com/huyufeifei/p/8980745.html
Copyright © 2011-2022 走看看