码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 1038 Recover the Smallest Number


    题目描述
    解题思路:具体看y总描述,(偏序关系证明)还是有点略懵。
    具体贪心证明:每个字符串要满足<关系,这个<关系是自己人为定义的。
    具体关系如下:若a<=b 等价于 ab<=ba。 其中ab表示拼接。
    有了这个关系之后,使用sort排序,从低到高进行拼接就可以了。
    证明为什么这么拼接可以是最优的
    假设现在最优解序列为 a 1 a 2 a 3 a i a i + 1 a n a_1a_2a_3a_ia_{i+1}a_n a1​a2​a3​ai​ai+1​an​。使用反证法,如果不满足每个字符串都是我们定义的<关系,则必然存在一个 a i > a i + 1 a_i > a_{i+1} ai​>ai+1​,则等效于 a i a i + 1 > a i + 1 a i a_ia_{i+1} > a_{i+1}a_{i} ai​ai+1​>ai+1​ai​,那我们完全可以将 a i 与 a i + 1 a_i与a_{i+1} ai​与ai+1​进行位置互换变为 a 1 a 2 a 3 a i + 1 a i a n a_1a_2a_3a_{i+1}a_{i}a_n a1​a2​a3​ai+1​ai​an​,其余不变,中间这段变小了,则原序列就不是最优解,假设矛盾。

    至于为什么不能直接对字符串字典序排序,而需要定义新的比较方式。那是因为我们用下面的做法,但是无法使用反证法证明出这样贪心是最优的。因为在反证法过程中: a i > a i + 1 a_i > a_{i+1} ai​>ai+1​你无法保证交换完顺序之后,拼接的时候 a i a i + 1 a_ia_{i+1} ai​ai+1​> a i + 1 a i a_{i+1}a_i ai+1​ai​,如:8677 867 8677867 < 8678677

    #include
    #include
    #include
    using namespace std;
    const int N = 1e5+10;
    string s[N];
    int cmp(string a,string b){
        return a+b < b+a;
    }
    int main(){       
        int n;
        cin>>n;
        for(int i = 0;i < n;i++) cin>>s[i];
        sort(s,s+n,cmp);
        string res = "";
        for(int i = 0;i < n;i++) res += s[i];
        int i = 0;
        while(i + 1 <= res.length()-1 && res[i] == '0') i++;
        cout<<res.substr(i);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  • 相关阅读:
    STM32F303移植RT-Thread过程中因选择的芯片内核文件错误出现内存不足和hard fault问题
    RabbitMQ原理和架构图解(附6大工作模式)
    【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
    洗地机哪个好用?2023年洗地机推荐指南
    洛谷P8669 乘积最大
    自建rtmp、rtsp媒体服务器及遇到的问题
    发布npm包质量分测试
    【正点原子FPGA连载】第九章 按键控制LED实验摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0
    无需公网IP,通过内网穿透轻松搭建微信公众号开发本地调试环境!
    计算机毕业设计(78)php小程序毕设作品之校园食堂就餐预约小程序系统
  • 原文地址:https://blog.csdn.net/weixin_49801142/article/details/126101006
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号