「Codeforces」A. Reverse

这篇具有很好参考价值的文章主要介绍了「Codeforces」A. Reverse。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

A. Reverse

2022年2月15日15:29:19

题目描述

给一个长度为 n 序列, p 1 , p 2 , … , p n p_1, p_2, \dots, p_n p1,p2,,pn 。选择两个整数,即一个区间 [ L , R ] [L, R] [L,R] ,对其区间进行反转操作。

要求你找到恰好执行一次反转操作获得的字典最小序列。

序列是一个数组,由 1 到 n 以内的不同数字任意顺序排列组成。例如 [ 2 , 3 , 1 , 5 , 4 ] [2,3,1,5,4] [2,3,1,5,4] 是一个排列,但 [ 1 , 2 , 2 ] [1,2,2] [1,2,2] [ 1 , 3 , 4 ] [1,3,4] [1,3,4] 不是,前者是因为数字重复,后者是因为最大值超过了 n(不在 n 范围内)。

输入描述

第一行 T( 1 < = t < = 500 1<=t<=500 1<=t<=500) 表示测试样例数量,每组测试样例描述如下:

每组测试用例的第一行包含一个整数 n( 1 < = n < = 500 1<=n<=500 1<=n<=500),表示序列长度。

每组测试用例的第二行包含 n 个整数,表示序列元素。

输出描述

输出可以获得的字典序最小的排列

样例

#1
4
1
1
3
2 1 3
4
1 4 2 3
5
1 2 3 4 5
1 
1 2 3 
1 2 4 3 
1 2 3 4 5 

提示

解析

找到第一个 A [ i ] ! = i A[i] != i A[i]!=i 的元素下标为 L,接着找 A [ i ] = = t A[i]==t A[i]==t 的元素下标 R,对这个 [ L , R ] [L, R] [L,R] 区间进行反转即可。文章来源地址https://www.toymoban.com/news/detail-433896.html

AC Code

public class Main {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer st = new StreamTokenizer(br);
    static PrintWriter out = new PrintWriter(new BufferedOutputStream(System.out));

    public static void main(String[] args) throws Exception {
        int T = nextInt();
        while(T != 0) {
            int n = nextInt();
            int[] A = new int[n+1];
            for(int i = 1; i <= n; i++) A[i] = nextInt();
            int L = 0, R = 0;
            for(int i = 1; i <= n; i++) {
                if(L == 0 && A[i] != i) {
                    L = i;
                    continue;
                }
                if(L != 0 && A[i] == L) {
                    R = i;
                    break;
                }
            }
            A = reverse(A, L, R, n);
            for(int i = 1; i <= n; i++) out.print(A[i] + " ");
            out.println();
            T--;
        }
        out.flush();
    }

    public static int[] reverse(int[] arr, int start, int end, int n) {
        int[] A = new int[n+1];
        int cnt = start;
        while(start <= end) A[cnt++] = arr[end--];
        for(int i = 1; i <= n; i++) {
            if(A[i] == 0) A[i] = arr[i];
        }
        return A;
    }

    public static int nextInt() throws Exception {
        st.nextToken();
        return (int) st.nval;
    }
}

到了这里,关于「Codeforces」A. Reverse的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 某软件的一个模块的需求规格说明书中描述【软件测试题目】

    某软件的一个模块的需求规格说明书中描述 (1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2% (2)非年薪制员工:严重过失,扣除当月薪资的8%;过失,扣除当月薪资的4% (1)分析原因及结果 原因 c1:年薪制员工 c2:非年薪制员工 c3:过失 c4:严重过失

    2024年02月08日
    浏览(48)
  • [2022 CISCN]初赛 web题目复现

    源码泄露www.zip,用网上的链子直接打 考点: CVE-2022-1292 SSRF 项目分析 项目后端为python+go,其中python部署在外网,go通过python转发到内网 先看python,一共有四个路由: / 为主界面 /getcrt 生成一个x509证书 /createlink 调用c_rehash创建证书链接 /proxy 通过代理访问go内网服务 再来看g

    2023年04月12日
    浏览(30)
  • PMP课堂模拟题目及解析(第15期)

    141. 在新项目的干系人会议中,项目经理发现一名干系人对项目有抵触。项目经理记录这个问题,并对该干系人的参与程度评级。项目经理使用了哪项工具或技术来为干系人的参与程度评级? A. 干系人参与评估矩阵 B. 风险概率和影响评估 C. 人际关系技巧 D. 专家判断 142. 由于

    2024年02月07日
    浏览(56)
  • 数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)

    目录 题目描述 输入示例 输出示例 解题思路  解题方法(C语言) 解析 有序的二叉树遍历可以用堆栈以非递归的方式实现。 例如: 假设遍历一个节点数为6的二叉树(节点数据分别为1到6)时, 堆栈操作为:push(1);push(2);push(3);pop();pop();push(4);pop()

    2024年02月07日
    浏览(46)
  • 【软考】系统架构设计师-历年论文题目(2013-2022)

    2009-2022年系统架构设计师历年论文题目如下: 时间 题目 2009 1.论基于DSSA的软件架构设计与应用; 2.论信息系统建模方法; 3.论基于REST服务的Web应用系统设计; 4.论软件可靠性设计与应用 2010 1.论软件的静态演化和动态演化及其应用; 2.论数据挖掘技术的应用; 3.论大规模分

    2024年02月09日
    浏览(71)
  • 2022天府杯国际赛数学建模题目和思路

    下面是翻译过的,并非原题目。原题下载链接: https://wwp.lanzouv.com/iQWok0e9amcd 2022天府国际数模思路代码在线编写文档: https://docs.qq.com/doc/DRnRJYXBWYXBXYXhN

    2024年02月13日
    浏览(54)
  • 【PTA题目】7-11 求矩阵的局部极大值 分数 15

    7-11 求矩阵的局部极大值 分数 15 全屏浏览题目 切换布局 作者 徐镜春 单位 浙江大学 给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。 输入格式:

    2024年02月04日
    浏览(43)
  • 郑州轻工业大学2022-2023(2)数据结构题目集

    目录 6-1 线性表元素的区间删除                                   6-2 有序表的插入 6-3 合并两个有序数组                                          6-4 顺序表操作集 6-5 递增的整数序列链表的插入                            6

    2024年02月10日
    浏览(51)
  • 山东大学2022-2023多核复习课题目答案整理/往年题整理

    快说谢谢刘老师,一般按照复习题考原题!!! 下面是2022-2023的版本,每年基本不变,今年新增CUDA部分,本文已包含相关考点 MPI 基本使用方法在笔记中 矩阵向量乘法中,行数或者列数不能被线程数整除的情况下,如何分配数据? 基本思路就是小于余数的rank多算一份,然后

    2024年02月07日
    浏览(47)
  • 题解动态规划:蓝桥杯2022国赛B组 题解 A题目

    在这组题(蓝桥杯C/C++ B组 国赛)里面挑了几道喜欢的题目,做了一下,笔记思路如下。( 其实是我觉得能做出的题 ) 题目图片来源于:CSDN 罚时大师月色 请问2022,拆分成10个不同的正整数有多少种不同的分法。 这道题目,拿到手上的时候,第一个想法是暴力,但是,每次

    2023年04月08日
    浏览(92)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包