第十二届蓝桥杯A组省赛试题 I: 双向排序(Java)

试题 I: 双向排序
本题总分:25 分

【问题描述】
给定序列 (a1, a2, · · · , an) = (1, 2, · · · , n),即 ai = i。
小蓝将对这个序列进行 m 次操作,每次可能是将 a1, a2, · · · , aqi 降序排列,
或者将 aqi , aqi+1, · · · , an 升序排列。
请求出操作完成后的序列。

【输入格式】
输入的第一行包含两个整数 n, m,分别表示序列的长度和操作次数。
接下来 m 行描述对序列的操作,其中第 i 行包含两个整数 pi, qi 表示操作
类型和参数。当 pi = 0 时,表示将 a1, a2, · · · , aqi 降序排列;当 pi = 1 时,表示
将 aqi , aqi+1, · · · , an 升序排列。

【输出格式】
输出一行,包含 n 个整数,相邻的整数之间使用一个空格分隔,表示操作
完成后的序列。

【样例输入】
3 3
0 3
1 2
0 2

【样例输出】
3 1 2

【样例说明】
原数列为 (1, 2, 3)。
第 1 步后为 (3, 2, 1)。
第 2 步后为 (3, 1, 2)。
第 3 步后为 (3, 1, 2)。
与第 2 步操作后相同,因为前两个数已经是降序了。

【评测用例规模与约定】
对于 30% 的评测用例,n, m ≤ 1000;
对于 60% 的评测用例,n, m ≤ 5000;
对于所有评测用例,1 ≤ n, m ≤ 100000,0 ≤ pi ≤ 1,1 ≤ qi ≤ n。


60分,通过6/10测评点,其余测评点超时,Java代码

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);Comparator<Integer> comparator = new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2 - o1; //降序排序}};int n = scanner.nextInt();int m = scanner.nextInt();Integer[] num = new Integer[n];for (int i = 0; i < num.length; i++) {num[i] = i + 1;}for (int i = 0; i < m; i++) {int p = scanner.nextInt();int q = scanner.nextInt();if (p == 0) {Arrays.sort(num, 0, q, comparator);}else {Arrays.sort(num, q-1, num.length);}}for (Integer integer : num) {System.out.print(integer + " ");}}
}

满分Java代码
参考博客

import java.util.Scanner;public class Main {static class pair { int x, y;public pair(int x, int y) {super();this.x = x;this.y = y;}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();pair[] pairs= new pair[n+1];int top=0;for(int i=0;i<m;i++) { //记录有效步骤int p = scanner.nextInt();int q = scanner.nextInt();if(p == 1 && top > 0) {while(top > 0 && pairs[top].x == 1) {//连续出现相同的操作if(pairs[top].y<=q) q=pairs[top].y;top--;}//相邻的相同操作的范围小于当前范围while(top >= 2 && pairs[top-1].y >= q) {top -= 2;}pairs[++top] = new pair(1,q);}if(p==0){while(top > 0 && pairs[top].x == 0) {if(pairs[top].y >= q) q=pairs[top].y;top--;}while(top >= 2 && pairs[top-1].y <= q) top -= 2;pairs[++top] = new pair(0,q);      }}int num[] = new int[n+1];int k = n;int l = 1,r = n;for(int i = 1; i <= top; i++) {if(pairs[i].x == 0) {while(l <=r && pairs[i].y < r)num[r--] = k--;}if(pairs[i].x == 1) {while(l <=r && pairs[i].y > l)num[l++] = k--;}}if(top % 2 == 0) {//为操作1while(l <= r)num[r--] = k--;}else {//为操作0while(l <= r)num[l++] = k--;}for(int i = 1; i <= n; i++) {System.out.print(num[i] + " ");}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

循环自相关函数和谱相关密度(四)——实信号、复信号模型下的QPSK信号循环谱推导

关注公号【逆向通信猿】,口令:循环谱 说明:接上一节循环自相关函数和谱相关密度(三)——实信号、复信号模型下的BPSK信号循环谱MATLAB仿真结果及代码 8 QPSK信号谱相关密度函数 8.1 实信号模型 QPSK实信号表达式可以写为 r ( t ) = y I ( t ) − y Q (

JavaFX技巧29:使布局忽略不可见的节点

在我仍在Swing中实现UI的时候&#xff0c;我曾经是MigLayout的忠实拥护者&#xff08;“一个布局管理者来统治所有这些&#xff0c;对吗Mikael&#xff1f;”&#xff09;。 我真正喜欢的功能之一是当组件不可见时可以定义不同的行为。 MigLayout允许我保留现在不可见的组件所占…

第十一届蓝桥杯A组省赛填空试题 A: 门牌制作(Java)

试题 A: 门牌制作 本题总分&#xff1a;5 分 【问题描述】 小蓝要为一条街的住户制作门牌号。 这条街一共有 2020 位住户&#xff0c;门牌号从 1 到 2020 编号。 小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符&#xff0c;最后根据需要将字符粘贴到门牌上&#xff0c;例如…

循环自相关函数和谱相关密度(五)——实信号、复信号模型下的QPSK信号循环谱MATLAB仿真结果及代码

关注公号【逆向通信猿】口令:循环谱 说明:接上一节循环自相关函数和谱相关密度(四)——实信号、复信号模型下的QPSK信号循环谱推导 8.4 仿真结果 8.4.1 实QPSK信号 符号速率RB = 40,采样率Fs = 960,载波频率fc = 300,符号数N = 1000,矩形成形,二倍载波频率为符号速…

第十一届蓝桥杯A组省赛填空试题 B: 既约分数(Java)

试题 B: 既约分数 本题总分&#xff1a;5 分 【问题描述】 如果一个分数的分子和分母的最大公约数是 1&#xff0c;这个分数称为既约分数。 例如&#xff0c;3/4&#xff0c;5/2&#xff0c;1/8&#xff0c;7/1都是既约分数。 请问&#xff0c;有多少个既约分数&#xff0c;分…

C++判断是否为素数、求一个数的因数、质因数分解

判断一个数是否为素数 #include<iostream> #include<vector> #include<math.h> #include<algorithm>/*判断是否为素数*/ bool isprime(int n) {bool result;int k (int)sqrt((double)n); // 只需要循环到 √n 即可int i 0;for (i 2; i < k; i){…

新的JDK 11文件方法isSameContent()

已经建议通过JDK-8202285将名为isSameContents()方法添加到JDK 11中的Files类中[[&#xff08;fs&#xff09;向文件中添加用于比较文件内容的方法”]。 由Joe Wang提议 &#xff0c;此新方法“打算是现有isSameFile方法的扩展&#xff0c;因为它没有比较内容以回答两个文件是否…

第十一届蓝桥杯A组省赛填空试题 C: 蛇形填数(Java)

试题 C: 蛇形填数 本题总分&#xff1a;10 分 【问题描述】 如下图所示&#xff0c;小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。 容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 20 行第 20 列 的数是多少&#xff1f; 【答案提交】 这是一道结果填空的题&…

Collatz函数的C++递归实现

Collatz函数为(正)自然数定义如下&#xff1a;collatz(N)&#xff1a;如果n是偶数&#xff0c;则返回n/2&#xff0c;否则返回(n∗3)1 #include <iostream> int Collatz(int n) {if (n % 2 0)n / 2;elsen 3 * n 1;return n; }int main(int argc, char* argv[]) {if (…

AI+药物研发:人工智能赋能新药研发(人工智能应用案例)

首先&#xff0c;生物制药行业面临着两个挑战&#xff1a; 第一&#xff0c;新药研发周期很长且非常复杂&#xff1b; 第二&#xff0c;药物研发过程成本昂贵。在1950年的时候&#xff0c;十亿美元可以研发几十个药&#xff0c;到了2020年之后&#xff0c;十亿美元只能研发一个…

具有CDI和lambda的策略模式

策略设计模式在运行时动态选择一种实现算法&#xff0c;一种策略。 该模式可用于根据情况选择不同的业务算法。 我们可以将不同的算法实现定义为单独的类。 或者&#xff0c;我们利用Java SE 8 lambda和函数&#xff0c;它们在此处充当轻量级策略实现。 CDI能够注入参数化类型…

计算圆周率π的C++实现(任意精度)

π\piπ的计算公式 代码 #include <iostream> #include <corecrt_math_defines.h> #include <iomanip>double compute_pi(int N) //计算pi函数 {double dx 1.0 / N;double pi 0;for (int i 1; i < N; i){pi 2 * sqrt(1 - i * dx*i*dx); // 积分函数}…

第十一届蓝桥杯A组省赛填空试题 D: 七段码(Java)

试题 D: 七段码 本题总分&#xff1a;10 分 【问题描述】 小蓝要用七段码数码管来表示一种特殊的文字。 上图给出了七段码数码管的一个图示&#xff0c;数码管中一共有 7 段可以发光的二极管&#xff0c;分别标记为 a, b, c, d, e, f, g。 小蓝要选择一部分二极管&#xff0…

【弗雷泽岛发射站所需的最小发射功率计算】通信调制体制设计之64QAM性能分析MATLAB仿真及代码

关注公号【逆向通信猿】更精彩!!! 任务背景 弗雷泽岛旅游经理在审查您之前建立无线链路任务的解决方案时,正在研究使用无线链路传输实时安全视频源的可能性。由于来自岛周围的多个安全摄像机的视频信号在传输之前被多路复用,因此无线信道的数据速率是不同的。弗雷泽岛旅…

第十一届蓝桥杯A组省赛试题 F: 成绩分析(Java)

试题 F: 成绩分析 时间限制: 1.0s 内存限制: 512.0MB 本题总分&#xff1a;15 分 【问题描述】 小蓝给学生们组织了一场考试&#xff0c;卷面总分为 100 分&#xff0c;每个学生的得分都是 一个 0 到 100 的整数。 请计算这次考试的最高分、最低分和平均分。 【输入格式】 输…

基于代价函数小波脊相位的MFSK信号符号速率估计MATLAB仿真及代码(2020.12.14更新)

算法来源 王勇, 王李福, 邹辉,等. 一种小波脊相位提取方法: 中国专利. 仿真结果 引言 当前,脊点的选取较准确也较经典的方法是Liu等提出的里程碑式的基于代价函数的小波脊相位提取方法(即代价函数脊法),其利用代价函数来抑制噪声的影响,并结合动态规划的思想进行脊线的…

AI+社区智能管理,赋能智慧城市人情共「智」(人工智能应用案例)

社区是城市的关键组成部分&#xff0c;社区治理是围绕社区场景下的人、地、物、情、事的管理与服务。 随着城市化的快速推进及人口流动的快速增加&#xff0c;传统社区治理在人员出入管控、安防巡逻、车辆停放管理等典型场景下都面临着人力不足、效率低下、响应不及时等诸多难…

第十一届蓝桥杯A组省赛试题 G: 回文日期(Java)

试题 G: 回文日期 时间限制: 1.0s 内存限制: 512.0MB 本题总分&#xff1a;20 分 【问题描述】 2020年春节期间&#xff0c;有一个特殊的日期引起了大家的注意&#xff1a;2020年2月2日。因为如果将这个日期按 yyyymmdd 的格式写成一个8位数是 20200202 &#xff0c;恰好是一个…

多种参数的BCH、RS码和(2,1,6)卷积码编码的MATLAB仿真实现

欢迎同步关注公众号【逆向通信猿】 关于BCH码、RS码和卷积码的原理,可以查阅相关书籍资料,在此不多作赘述,有疑问可在下方留言。 MATLAB代码如下 clear;close all;clc; N=500; bit=randi([0 1],1,N);%% BCH码 %<

自同步扰乱编码器的原理与MATLAB仿真

欢迎同步关注公众号【逆向通信猿】 扰乱编码原理 在实际的数字通信中,由于语言统计特性和采用的信息编码方案等原因,信源输出序列普遍具有0、1不平衡性,即信息序列中比特 0 和比特 1 出现的概率并不是各占1/2且可能出现连续的“0”或连续的“1”,这不仅破坏了系统设计的前…