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

​Problem - 2148F - Codeforces​[字符串后缀排序]

Problem - 2148F - Codeforces

题意很简单 我们可以随意防止字符串 按照从上到下 如果最后一层某个位置没有字符串 那么上面的字符串就会掉下来到最后一层 求字典序最小的最下层的字符串

首先 最朴素的思想 我们会找出当前最小长度的字符串 长度k 然后截取所有字符串的前k个前缀元素 然后排序 找到最小的一个 将整个字符串填进去 然后从k到下一个长度如此反复 但是排序和遍历过多 时间复杂度过大 这是从从左到右遍历比较后缀数字的大小

这个时候 我们可以用类似于后缀数组的倍增思想进行排序
我们从后往前遍历 用数组res 存储所有长度大于当前长度len的数组的索引
然后维护一个rk数组 表示数组的排名(按照字典序)
我们从后往前遍历 对于最后一位 直接按照最后一位的所有数组当前位置的字符进行排序
往前遍历的时候 我们可以维护一个vector<arrey<int,3>> 分别存储 {当前位置的字符 当前位置的后缀 在上一次遍历的排名 以及数组索引 }
排序完成后 第一名的就是当前位置的最优索引 然后更新一下排名 便于往前遍历的时候复用
然后进行排序 这样可以复用后缀大小的关系 直接解决包含当前位的后缀的大小的问题

最后生成答案的时候 按照每个分界位置的最优选择进行生成即可

代码如下:

#include <bits/stdc++.h> using namespace std; void solve(){ int n; cin>>n; vector<vector<int>>res; vector<vector<int>>a(n+1); int maxlen=0; for(int i=1;i<=n;i++){ int k; cin>>k; maxlen=max(maxlen,k); a[i].assign(k+1,0); for(int j=1;j<=k;j++){ cin>>a[i][j]; while(res.size()<=j)res.push_back({}); res[j].push_back(i); } } vector<int>rk(n+1,-1); vector<int>minidx(maxlen+1,0); for(int i=maxlen;i>=1;i--){ vector<array<int,3>>cur; for(auto j:res[i]){ cur.push_back({a[j][i],rk[j],j}); } sort(cur.begin(),cur.end()); minidx[i]=cur[0][2]; int rkk=0; for(auto j:cur){ rk[j[2]]=++rkk; } } vector<int>ans; while(ans.size()<maxlen){ int tmp=ans.size(); auto &v =a[minidx[tmp+1]]; for(int i=tmp+1;i<v.size();i++){ ans.push_back(v[i]); } } for(auto x:ans)cout<<x<<' '; cout<<'\n'; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin>>t; while(t--)solve(); return 0; }
http://www.jsqmd.com/news/583418/

相关文章:

  • ObsPy完整指南:如何用Python快速处理地震数据
  • c++入门:函数实参形参傻傻分不清?如何改变实参!
  • 从火柴盒到AI:探索MENACE的数字化旅程
  • 基于单片机的婴儿看护系统设计
  • GHelper终极指南:用轻量化工具彻底替代Armoury Crate,释放华硕ROG笔记本全部性能!
  • 全双工和半双工的区别
  • 解锁论文写作新境界:书匠策AI——学术探索的智能导航灯
  • XZ8011双节8.4V充电芯片 输入电压8.9-15V
  • 无缝跨平台体验:APK-Installer让Windows运行Android应用的革命性工具
  • 夸克扫码登录
  • STM32时钟频率与耗电量这一块
  • 怎样评估数据化管理?数据化管理如何持续改进?
  • 字符串(Updating)
  • 2026年4月市面上铜狮子生产厂家,铜钟/人物雕塑/铜马/铜大缸/关公铜像/铜麒麟/铜大象/铜佛像,铜狮子铸造厂哪家好 - 品牌推荐师
  • 清明节海报设计指南:4个要点打造高级感视觉呈现
  • 让 AI 自己进化自己:深入 HyperAgents
  • 2026年关投强媒体发稿行业口碑分析:真实客户反馈与核心优势测评 - 发稿平台推荐
  • 核心算法与关键技术突破 ——空间计算操作系统的底层原理创新与工程级实现路径
  • FreeRTOS 工程化要点:任务划分、优先级设计与 CPU 占用率监控
  • SIP协议(GB/T 28181)Wireshark抓包内容汇总
  • 文件夹的修改日期可以改吗?分享你三个修改方法
  • 每日温度-leetcode
  • 2026夏天不喜欢穿短裤?透气值和凉感超国标、尺码32个覆盖100斤到290斤——龙牙隐腾到底有多能打? - 行业深度观察
  • 构建nfs provisioner网络存储
  • linux异常报警推送企业微信群聊机器人
  • 穿棕机品牌大比拼:2026年哪些品牌脱颖而出?穿筘机配件/自动穿棕机/穿筘/穿综机配件,穿棕机公司口碑推荐 - 品牌推荐师
  • CLAUDE.md和skill.md有什么不同
  • 2026年市场打印机企业,市场正规的打印机供货商鼎思科技诚信务实提供高性价比服务 - 品牌推荐师
  • 用-ChatGPT-赚钱-使用-AI-轻松在线赚取被动收入的指南
  • 由-ChatGPT-打造的-100-个令人惊叹的电子邮件模板