当前位置: 首页 > news >正文

洛谷P1012 拼数

洛谷P1012 拼数
题目大意
给定 nn个正整数,将它们拼接成一排,使得拼接得到的整数最大。
数据范围: 1≤n≤20,1≤ai≤1e9。
分析
直接按数值大小降序排列不一定得到最大结果,例如 13 和 312:13 < 312,但拼接成 13312 和 31213,后者更大。
正确的比较方式是比较两个数 xx 和 yy 的拼接结果:如果 x+y>y+x(这里的加号表示字符串拼接),则 x 应该排在 y前面。
为什么呢?我们联想一下普通的数字排序,因为有明显的比较规则,所有我们用sort可以轻松排序,这里也是一样的,通过知道了排序规则后,就可以用sort(把sort理解成一个两两比较无数次,使得得到想要的排序顺序即可)。
Solution
标签: 贪心,排序
算法思路

  1. 将所有整数转换为字符串。
  2. 定义比较函数 comp(a, b):返回 a + b > b + a,即若 a 接在 b 前面得到的字符串更大,则 a 应排在 b 前面。
  3. 按此比较规则对字符串数组进行降序排序。
  4. 将排序后的字符串依次拼接,输出结果。
    代码说明
    使用 sort 配合自定义比较函数,时间复杂度 O(L*nlogn),其中 L 为字符串平均长度(最大 10),完全可行。
    注意比较函数直接返回布尔值,符合 sort 的预期。
    拼接结果直接用 cout 输出字符串,无需处理前导零(因为输入为正整数)。
    时间复杂度
    排序 O(nlogn⋅L),n≤20n≤20 时极快。
    空间复杂度 O(n⋅L)。

下面是代码

#include<bits/stdc++.h>
using namespace std;
using db = long double;
using ll = long long;
#define endl '\n'
#define fast ios::sync_with_stdio(0),cin.tie(0);
#define pll pair<ll,ll>
const ll N = 1e5 + 5;
const ll mod = 998244353;
const ll inf = LLONG_MAX;bool comp(string a, string b){return a + b > b + a;
}
void solve(){ll n; cin >> n;vector<string> aa;for(ll i = 1; i <= n; i++){string s1; cin >> s1;aa.push_back(s1);}sort(aa.begin(),aa.end(),comp);for(string a : aa){cout<<a;}cout<<endl; 
}int main(){fast;ll t = 1; //cin >> t;while(t--){solve();}
}
http://www.jsqmd.com/news/409418/

相关文章:

  • 我们感知的世界,是真实的吗?
  • 科研前沿篇---具身智能
  • python: Strategy Pattern
  • 1026: a+b问题
  • 2026-02-24 闲话
  • 科研前沿篇---NLP与多模态技术
  • auto.js开发
  • python-flask企业员工考勤打卡信息管理系统Pycharm vue django
  • python-flask吉他乐谱推荐交流网站的实现Pycharm vue django
  • 系统思考:动态性复杂时代的组织认识
  • python-flask九价疫苗预约系统_a6tmiPycharm vue django
  • python-flask基于爬虫系统的世界历史时间轴_6ouj9Pycharm vue django
  • python-flask基于人脸识别的二手物品交易系统 用户发布_i1lnoPycharm vue django
  • python-flask基于协同过滤推荐算法的电影观后感推荐管理系统的设计Pycharm vue django
  • 探索大数据领域数据血缘的价值与意义
  • 初识CAPL
  • AcWing 4279:笛卡尔树 ← 单调栈
  • G004 DAG上DP P1685 游览 P4017 最大食物链计数 - 洛谷
  • 数据库的操作
  • AI提示系统的商业竞争加剧,提示工程架构师的机会与风险在哪?
  • 大数据领域Zookeeper的故障排查与解决方案
  • Flink状态后端安全:RocksDB数据加密配置与性能调优
  • 中缀转后缀表达式
  • QA之二 - 单元测试--JUnit5
  • 本地AI,一键抠图
  • 网页源代码查看 在线工具分享
  • 科研前沿篇---神经网络前沿结构
  • 科研前沿篇---模型性能提升
  • 混合架构设计:Agent-Workflow-RAG-Skill协同方案
  • 控制鼠标的skill openclaw官方的skill