news 2026/10/13 10:21:08

打卡信奥刷题(3624)用C++实现信奥题 P11839 [USACO25FEB] The Best Lineup S

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
打卡信奥刷题(3624)用C++实现信奥题 P11839 [USACO25FEB] The Best Lineup S

P11839 [USACO25FEB] The Best Lineup S

题目描述

Farmer John 有NNN(1≤N≤2⋅1051 \leq N \leq 2 \cdot 10^51≤N≤2⋅105)头奶牛排成一条队伍aaa。队伍aaa中从前到后第iii头奶牛编号为一个整数aia_iai​(1≤ai≤N1 \leq a_i \leq N1≤ai​≤N)。可能存在多头奶牛编号为同一整数。

FJ 将以以下方式构造另一条队伍bbb:

  • 初始时,bbb为空。
  • 当aaa非空时,移除aaa最前面的奶牛,并选择是否将该奶牛添加到bbb的最后。

FJ 想要构造队伍bbb,使得bbb中从前到后的编号序列是字典序最大的(见脚注)。

在 FJ 构造队伍bbb之前,他可以执行以下操作至多一次:

  • 选择队伍aaa中的一头奶牛,并将其移动至当前位置之前的任意位置。

假设 FJ 以最优方式执行至多一次上述操作,输出他可以达到的字典序最大的bbb的编号序列。

每个测试点将包含TTT(1≤T≤1001 \leq T \leq 1001≤T≤100)个独立的测试用例。

输入格式

输入的第一行包含TTT。

每一个测试用例的第一行包含NNN。

每一个测试用例的第二行包含NNN个空格分隔的整数a1,a2,…,aNa_1, a_2, \ldots, a_Na1​,a2​,…,aN​。

输入保证所有测试用例的NNN之和不超过10610^6106。

输出格式

对于每一个测试用例输出一行,包含字典序最大的bbb。

输入输出样例 #1

输入 #1

3 5 4 3 2 1 3 6 5 1 2 6 3 4 6 4 1 3 2 1 1

输出 #1

4 3 3 2 1 6 5 4 4 3 2 1 1

说明/提示

样例 1 解释:

在第一个测试用例中,FJ 可以将第五头奶牛移动到第二头奶牛之后。现在,a=[4,3,3,2,1]a = [4, 3, 3, 2, 1]a=[4,3,3,2,1]。可以证明,[4,3,3,2,1][4, 3, 3, 2, 1][4,3,3,2,1]也是字典序最大的bbb。

在第二个测试用例中,FJ 可以将第四头奶牛移动到队伍的最前面。

在第三个测试用例中,FJ 不需要执行任何操作。他可以通过将除第二头奶牛之外的每头奶牛添加到bbb的最后来构造bbb。可以证明,这得到了字典序最大的bbb。

  • 测试点2∼42\sim 42∼4:N≤100N \leq 100N≤100。
  • 测试点5∼85\sim 85∼8:N≤750N \leq 750N≤750。
  • 测试点9∼189\sim 189∼18:没有额外限制。

脚注

我们知道,序列sss的字典序大于序列ttt当且仅当以下条件之一成立:

  • 在si≠tis_i \neq t_isi​=ti​的第一个位置iii处,有si>tis_i > t_isi​>ti​。
  • 当不存在这样的iii时,sss的长度大于ttt。

C++实现

#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intT1,n,a[200005];pair<int,int>val[200005];intcmp(pair<int,int>&x,pair<int,int>&y){if(x.first!=y.first)returnx.first>y.first;elsereturnx.second<y.second;}signedmain(){cin>>T1;while(T1--){cin>>n;for(inti=1;i<=n;i++){cin>>a[i];val[i].first=a[i];val[i].second=i;}intma=0,ma2=0,moved=0,outp=0;sort(val+1,val+n+1,cmp);for(inti=1;i<=n;i++){if(val[i].second>ma){ma2=ma;ma=val[i].second;if(outp)cout<<" "<<val[i].first;elsecout<<val[i].first;outp=1;}elseif(val[i].second>ma2&&!moved){ma=val[i].second;if(outp)cout<<" "<<val[i].first;elsecout<<val[i].first;outp=1;moved=1;}}cout<<endl;}return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/13 10:20:39

K8s 探针配置的 3 个反直觉行为:为什么 Pod 一直没就绪

我不会起名字322 后端 / 算法 / 数据库 &#x1f4d8; 技术栈 &#xff5c; &#x1f9e9; 力扣 Hot100 &#xff5c; &#x1f439; Go 项目 &#xff5c; &#x1f7e5; Redis &#xff5c; &#x1f42c; MySQL 文章目录K8s 探针配置的 3 个反直觉行为&#xff1a;为什么 P…

作者头像 李华
网站建设 2026/10/13 10:19:00

电梯电源干扰消除方案

电梯作为高层建筑核心垂直交通设备&#xff0c;其控制系统、变频驱动系统、门禁及监控系统均为精密弱电设备&#xff0c;对供电电源的稳定性、纯净度要求极高。现场电网存在的谐波干扰、电压浪涌、尖峰脉冲、电磁辐射、零线干扰等电源问题&#xff0c;极易导致电梯出现主板死机…

作者头像 李华
网站建设 2026/10/13 10:18:55

Agent开发核心组件进阶全总结:从理论到代码实战

引言掌握Agent的核心组件&#xff0c;是区分“调用接口的程序员”与“Agent工程师”的关键分水岭。调用API只是入门&#xff0c;真正理解核心循环、记忆系统、RAG、工具调用和规划范式的工程细节&#xff0c;才能构建出稳定、可用的Agent系统。本文把Agent开发的五大核心组件拆…

作者头像 李华
网站建设 2026/10/13 10:18:47

深圳机器人零件厂家推荐:源头直供机器人零件加工更省心

在机器人零部件制造、机器人零件 CNC 加工行业&#xff0c;很多研发与采购团队长期被供应链乱象困扰&#xff1a;图纸对接层层转手、报价模糊虚高、交期层层延误、品质问题互相推诿。想要做好机器人零部件精密加工、机器人结构件加工、机器人关节零件加工&#xff0c;选对直供源…

作者头像 李华
网站建设 2026/10/13 10:17:15

Conda换源配置全攻略:解决下载慢与连接失败问题

1. 为什么conda换源这件事值得单独拿出来说如果你用Anaconda或者Miniconda管理过Python环境&#xff0c;大概率经历过这样的场景&#xff1a;敲下conda install numpy&#xff0c;终端里光标转了半天&#xff0c;进度条纹丝不动&#xff0c;最后甩给你一个CondaHTTPError: HTTP…

作者头像 李华