首页 > 编程语言 >打卡信奥刷题(561)用C++信奥P7343[普及组/提高] 【DSOI 2021】电子跃迁

打卡信奥刷题(561)用C++信奥P7343[普及组/提高] 【DSOI 2021】电子跃迁

时间:2025-01-08 14:03:43浏览次数:3  
标签:le 信奥 int 561 样例 电子 ch xi 打卡

【DSOI 2021】电子跃迁

题目背景

“如果能证明大统一理论,这个世界将焕然一新。”
“量子……量子……就差一点……”
“嘶……哦。我想我明白了。”

题目描述

在你的视野下,出现了一排电子,他们分别拥有不同的能量。你需要做的是通过将相邻电子互换的方法,将电子排的有序。有序是指:能量最小的电子放到最靠近原子核的左边,将第二小的电子放在第二……将能量最大的电子放在最右边。
可是,你发现电子轨道之间忽然出现了 m m m 个奇怪的力,使位于第 x i x_i xi​ 个位置的电子和位于第 x i + 1 x_i+1 xi​+1 个位置的电子无法进行交换。

你深信这个力将会颠覆当下的物理理论。你需要做的是将现在的一排电子排得尽量有序以发现其中规律。

尽量有序是指:在条件下,能量最小的电子尽量放到左边直至出现屏障,以此类推。

输入格式

第一行输入两个整数 n , m n,m n,m ,分别表示电子数量和力的数量。
第二行输入 n n n 个整数,表示初始电子排列,其中第 i i i 个数 a i a_i ai​ 代表第 i i i 个电子拥有的能量。
第三行包含 m m m 个整数。其中第 i i i 个整数 x i x_i xi​ 表示位于第 x i x_i xi​ 个位置的电子和位于第 x i + 1 x_i+1 xi​+1 个位置的电子无法进行交换的。

输出格式

输出一行 n n n 个整数,表示在这种情况下尽量有序的排列结果。

样例 #1

样例输入 #1

3 0
3 2 1

样例输出 #1

1 2 3

样例 #2

样例输入 #2

7 2
1 3 1 4 5 2 1
2 4

样例输出 #2

1 3 1 4 1 2 5

提示

对于 10 % 10\% 10% 的数据,满足 m = 0 m=0 m=0;
对于另 20 % 20\% 20% 的数据,满足 n ≤ 1000 , m ≤ 100 n \le 1000,m \le 100 n≤1000,m≤100;
对于 100 % 100\% 100% 的数据,满足 0 ≤ n , m ≤ 5 × 1 0 5 , 1 ≤ x i ≤ n − 1 , 1 ≤ a i ≤ 1 0 9 0 \le n,m \le 5 \times 10^5,1 \le x_i \le n-1,1 \le a_i \le 10^9 0≤n,m≤5×105,1≤xi​≤n−1,1≤ai​≤109。

C++实现

#include
#include
#include<ctype.h>
#define int long long

using namespace std;

inline int read()
{
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch==‘-’)f=-1;ch=getchar();}
while(isdigit(ch)){x=x10+ch-‘0’;ch=getchar();}
return x
f;
}

int n,m,a[500005],b[500005];

signed main()
{
n=read(),m=read();
for(int i=1;i<=n;i++)
a[i]=read();
for(int i=1;i<=m;i++)
b[i]=read();
sort(b+1,b+m+1);
b[m+1]=n;
for(int i=0;i<=m;i++)
sort(a+b[i]+1,a+b[i+1]+1);
for(int i=1;i<=n;i++)
printf("%lld ",a[i]);
return 0;
}

在这里插入图片描述

后续

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

标签:le,信奥,int,561,样例,电子,ch,xi,打卡
From: https://blog.csdn.net/rogeliu/article/details/144965243

相关文章

  • 信奥OJ的搭建
    第一步,服务器申请选择一:免费云服务器,免费虚拟主机如:阿贝云阿贝云提供了免费的云服务器和免费的云虚拟主机,可根据自己的实际应用情况选择。首先注册一个账户,然后需要支付0.3元做一个实名认证,如果实名认证成功了大概率会开通成功。如果失......
  • 全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之循环结构(while循环语句)
    在C++编程中,循环结构是控制程序流程的重要工具之一。前面介绍了for循环相关内容,对于for循环来讲,可以明确循环变量的初始值和终值,即可以确定循环的次数,对于循环次数不确定的情况,可以使用while循环来解决,while循环作为最基本的循环结构之一,允许代码在满足特定条件时重复执行。本......
  • (免费领源码)基于Java#SpringBoot#mysql#微信小程序的健身打卡平台的设计与实现13606-计
    摘 要随着人们健康意识的不断提高,健身已经成为一种流行的生活方式。然而,传统的健身方式往往受到时间和空间的限制,无法满足人们随时随地进行健身打卡的需求。为了解决这个问题,提出了一种基于SpringBoot微信小程序的健身打卡平台的设计与实现。本平台旨在提供一个便捷、实......
  • 打卡信奥刷题(540)用C++信奥P7060[普及组/提高]P7060 [NWRRC2014] Alarm Clock
    [NWRRC2014]AlarmClock题面翻译Alice梦见了一个时间,但她只记得了这个时间在电子钟上显现出来的段数,现在给出这个段数,让你反推Alice梦见的时间(若有多个答案,输出任意一个均可)段数:想必大家都听说过用火柴拼数字的游戏,比如1要用两个火柴,2要用5根火柴,8要用7根火柴等等(如题目......
  • 工学云一键异地打卡,智能签到新利器
    我们团队开发了一款创新的云打卡系统,专为工学云app设计,旨在通过智能定位技术和GPT4技术,为用户提供更高效、便捷的学习与工作体验。这款系统不仅能够实现异地签到,还能够自动生成周报、日报和月报,帮助用户在专升本复习中解放双手,提升效率。系统功能介绍异地签到功能该系统采......
  • 代码随想录打卡 Day 4
    代码随想录打卡Day45.四数相加IIleetcode题号:454.四数相加【题目描述】给你四个整数数组nums1、nums2、nums3和nums4,数组长度都是n,请你计算有多少个元组(i,j,k,l)能满足:0<=i,j,k,l<nnums1[i]+nums2[j]+nums3[k]+nums4[l]==0【思路分析】本......
  • 代码随想录打卡 Day 3
    代码随想录打卡Day31.哈希表的理论基础哈希表的定义哈希表是根据关键码的值直接访问数据的数据结构,一般用来快速判断一个元素出现在集合中。数组就可以看成是一张哈希表,这张哈希表中的关键字就是数组的索引下标,值就是数组中的元素。哈希表的基本概念哈希表的基本概念包......
  • 工学云智能打卡,异地签到
    在当今快节奏的学习和工作环境中,如何高效管理时间和优化流程成为许多职场人士和学生共同面临的挑战。为此,我们团队开发了一款专为工学云app设计的云打卡系统,该系统通过智能定位技术和GPT4技术的应用,旨在彻底改变传统打卡和报告撰写的方式,为用户提供更便捷、高效的学习与工作体......
  • 代码随想录打卡 Day 2
    代码随想录打卡Day21.链表的定义与操作链表作为基本的数据结构类型,其主要形式有三种:单链表双链表循环链表由于刷代码题平时在OJ上默认定义已经给出,可以直接使用。而在面试/机试时,一般需要需要自己手写链表。因此,正确写出链表的定义是非常有必要的。一个单链表的......
  • 打卡信奥刷题(523)用C++信奥P6861[普及组/提高] [RC-03] 难题
    [RC-03]难题题目描述求两个整数a,ba,ba,b(......