codeforces 920 C Swap Adjacent Elements

车辆TBOX科普 第64次 TBOX系统集成测试与文档编写 汽车电子开发中,TBOX作为核心网关面临独特挑战:需处理多网络接口、满足严苛安全标准并确保10年以上可靠性。项目文档是开发流程的核心资产,必须与编码同步更新,构建从需求到测试的完整闭环。系统集成测试需分层进行,结合硬件在环测试和自动化工具,并严格管理缺陷。文档与测试深度协同,通过追溯矩阵确保每个需求都被覆盖验证。最终交付不仅是软件包,更是一套包含完整验证报告的信任体系。这种严谨的工程纪律,是将代码转化为车规级可靠产品的关键保障。 阅读详情

Description
You have an array a consisting of n integers. Each integer from 1 to n appears exactly once in this array.

For some indices i (1 ≤ i ≤ n - 1) it is possible to swap ithth element with (i + 1)thth, for other indices it is not possible. You may perform any number of swapping operations any order. There is no limit on the number of times you swap ithth element with (i + 1)thth (if the position is not forbidden).

Can you make this array sorted in ascending order performing some sequence of swapping operations?
Input

The first line contains one integer n (2 ≤ n ≤ 200000) — the number of elements in the array.

The second line contains n integers a1a1, a2a2, …, anan (1 ≤ aiai ≤ 200000) — the elements of the array. Each integer from 1 to n appears exactly once.

The third line contains a string of n - 1 characters, each character is either 0 or 1. If i-th character is 1, then you can swap i-th element with (i + 1)-th any number of times, otherwise it is forbidden to swap i-th element with (i + 1)-th.
Output

If it is possible to sort the array in ascending order using any sequence of swaps you are allowed to make, print YES. Otherwise, print NO.
Examples

Input
6
1 2 5 3 4 6
01110
Output
YES
Input
6
1 2 5 3 4 6
01010
Output
NO

Note

In the first example you may swap a3a3 and a4a4, and then swap a4a4 and a5a5.


题意:给一个1~n的排列,以及第1~n-1哪些位置可以与后面的位置交换
思路:将连续的可交换的位置分别进行排序,处理完后如果整个序列是有序的,那么答案就是可以,如果不是就不行

#include<stdio.h>
#include<algorithm>
using std::sort;

const int _max = 200000 + 5;

int arr[_max];
bool mov[_max];

int main() {
    int n;
    scanf("%d", &n);

    char ch;
    for (int i = 1; i <= n; i++)scanf("%d", &arr[i]);
    for (int i = 1; i <= n-1;) {
            scanf("%c", &ch);
            if (ch == '0') {
                mov[i] = 0;
                ++i;
            }
            else if (ch == '1') {
                mov[i] = 1;
                ++i;
            }
    }
    int cur;
    int l;
    //因为最后的结果应该是1, 2, 3, ...n,所以可以逐个位置检查
    for (cur = 1, l = 1;cur<=n;) {
        if (arr[cur] == cur) { //和排序后的位置对应,不需要改动
        cur++; continue;
        }

        if (arr[cur] != cur) {//不对应,需要改动
            if (mov[cur] == 0)//不可以更改,那么这个位置永远都不能换成对应的数组
            {
                printf("NO");
                return 0;
            }
            else {//把这个位置和后面连续可改动的位置进行排序
                l = cur;
                while (mov[cur])++cur;
                sort(arr + l , arr + cur+1 );
                //检查位置是否一一对应
                for (; l <= cur&&arr[l]==l; ++l);
                if (l <= cur) {//不对应则不可能再有其他改变
                    printf("NO");
                    return 0;
                }
                else {//可行的,继续检查后面的位置
                    ++cur;
                    continue;
                }
            }

        }
    }
    printf("YES");
}
Flatten 层的深度理解与运用 阅读详情

相关推荐

Haystack框架实战:从零构建企业级智能问答系统

自然语言处理(NLP)技术通过让计算机理解和生成人类语言,正在深刻改变信息检索与交互方式。其核心原理在于将文本转化为机器可处理的向量表示,并通过语义相似度计算实现精准匹配。这一技术价值在于能够从海量非结构化数据中快速提取精准信息,大幅提升知识获取效率。在工程实践中,检索增强生成(RAG)架构结合了密集向量检索与大语言模型生成能力,成为构建智能问答、知识库助手等应用的主流方案。该架构通过将用户查询与文档库进行语义匹配,并为大语言模型提供精准上下文,有效提升了回答的准确性与可追溯性。本文以Haystack这一生

weixin_42521032的博客 577

Leetcode-Array Partition I

Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1, b1), (a2, b2), …, (an, bn) which makes sum of min(ai, bi) for all i from 1 to n as large as possibl

ck1n9的博客 355

vietjetair 航空的webpack多参数生成学习

工作内不是特别多,居安思危,有一个抓机票信息的公司面试前竟然需要做面试题,这就是一个题。看了下,有点麻烦,webpack 最初不得要领,看了下资料,找了个框架,练了两个简单的,搞这个吧。入库需要自己找,有几个参数不是明文的,算法不是很复杂,位置不太好找。整体难度一般。

liu_yueyang的博客 1510

CF920C C. Swap Adjacent Element

C. Swap Adjacent Elements time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output You have an array a consisting of n integers. Each integer from 1 to ...

Gee_Zer的博客 474

SNAP实战:Sentinel-1 GRD数据从预处理到后向散射系数生成全流程解析

本文详细解析了Sentinel-1 GRD数据从预处理到后向散射系数生成的全流程,包括辐射定标、噪声处理、地形校正等关键步骤。通过SNAP软件实战操作,帮助用户掌握SAR影像处理技巧,提升数据质量与分析效率,适用于地表变化监测、灾害评估等应用场景。

weixin_29239661的博客 536

基于单片机负载控制的无人机电气设备监测系统设计

为深入分析无人机电气设备的电子负载性能,实现对传输电子量的合理性监管与控制,设计基于单片机负载控制的无人机电气设备监测系统;利用电气信号发生电路,构建负载网络控制器与以太网模块运行所需的电气设备负载环境,借助PCB监控板建立PLC扩展负载模块与核心监控主机之间的物理连接关系,实现无人机电气设备监测系统的硬件执行环境搭建;在此基础上,通过STM32型单片机移植协议,确定无人机电气设备通信主机的现有组态形式,联合已设定的监控任务有线级条件,实现监测系统的软件执行环境搭建,完成基于单片机负载控制的无人机电气设备监

weixin_45905610的博客 1300

920C - Swap Adjacent Elements

C. Swap Adjacent Elements time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output You have an array a consisting of 

memory_qianxiao的博客 525

Harmony:C# 动态代码补丁的5大秘密武器

Harmony 是一个开源库,它允许你在运行时修改托管代码(即使用 .NET 或 Mono 编译的语言编写的应用程序)。它通过利用 AOP(面向切面编程)的思想,可以在不重新编译代码的情况下添加、替换或修改方法的行为。这对于游戏模组(Modding)、插件开发以及调试工具非常有用。安装 Harmony要使用 Harmony,你需要首先安装它。Harmony 作为一个 NuGet 包,可以直接通过 Visual Studio 的 NuGet 包管理器进行安装。安装步骤打开 Visual Studio。

java专栏 1191

调和级数gcd应用

D. Not Adding time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You have an arraya1,a2,…,ana1,a2,…,anconsisting ofnndistinctintegers. You are allowed to perform the following operati...

qq_52004482的博客 581

YOLOv8/v9轻量化优化:剪枝30%+蒸馏提精,模型体积缩至4MB还能跑Jetson

剪枝:用敏感度分析找到“可牺牲的30%”,不碰核心特征;蒸馏:借大模型的“经验”补回精度,甚至反超原始小模型;量化:针对边缘设备特性优化量化策略,把体积和延迟压到最低。如果你的项目卡在边缘部署(速度慢/体积大),按“剪枝→蒸馏→量化”三步走,90%能在Jetson上跑通30FPS+的实时检测。需要轻量化模型文件(v8s/v9s剪枝蒸馏后权重)、剪枝工具和Jetson部署脚本的,评论区扣“轻量化”,直接发你可运行版本~

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 669

081、空间降噪(Spatial Denoise)实战:双边滤波、非局部均值与BM3D在ISP中的调优

调参时,别只看PSNR/SSIM。找几个典型场景(夜景、人像、文字、天空),在真实设备上肉眼对比。我见过PSNR涨了2dB但图像看起来更差的案例——因为PSNR不惩罚纹理丢失。空间降噪这块,理论说再多,不如动手调一次。下次遇到噪点问题,先别急着上BM3D,试试双边滤波的自适应参数,说不定有惊喜。

zzfmlxs的博客 43

十七周周赛小节

最近考试考的,好凌乱啊。。今天的周赛好碎啊。。。哎,这个感觉不太好啊、、 上来想抢fb做c结果,悲剧了啊,错了两遍才搞明白什么意思啊。。。结果感觉有点费事就放了一下,结果就卡死了啊。。没来得及再做啊。。。sad、、、 简单说一下啊: A,比较水啊,就是给你长方体一个顶点上的三个面的面积,让你求长方体的所有边的边长。 A. Parallelepiped ti

I am a slow walker, but I never walk backwards! 1203

Pyinstaller打包为可执行文件编码错误的问题

Pyinstaller打包为可执行文件编码错误的问题 写好的python程序在vscode上运行没有任何问题,将程序利用pyinstaller打包后,运行程序发生了错误。 错误代码 UnicodeDecodeError: ‘utf-8' codec can't decode byte 0xce in position 20-21:invalid cotinuation byte 网上找到的解决方案是: 1.在命令行中输入 chcp 65001 2.按正常方式进行封装 pyinstaller

xuefeng_he的博客 1559

Swap Adjacent Elements CodeForces - 920C

You have an array a consisting of n integers. Each integer from 1 to n appears exactly once in this array. For some indices i (1 ≤ i ≤ n - 1) it is possible to swap i-th element with (i + 1)-th, for o...

tomjobs的博客 470

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

CodeForces 920C Swap Adjacent Elements

题目大意 给定一个序列,这个序列可以理解为一个1~n的全排列,再给出一个01串,1表示可以将索引i和i+1进行交换,且交换可以发生任意次,0表示不可以。 问最后能不能将序列升序排列。 题解 几乎 秒杀,因为简单。 判断每个索引处的数能不能回到自己应该在的位置即可,若都能回去,则输出YES,反之输出NO。 当a[i]>i时,a[i]应当处于位置i,判断从位置i到a[i]-1是否都可以进行交换,即是否全为1,若全为1说明其可以回到应在的位置,反之不可以。 类似的当a[i]<i时,判断从位置a[i]到

LJR的博客 269

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Codeforces 920C Swap Adjacent Elements

题目在这里呀~ 题意:给定一个整数n和一个n的全排列,以及一个01串,01串中的0表示第i位不能与第i+1位交换,1表示可以。 问能否通过若干次交换使得序列变为1,2,...,N. 这题其实挺简单的ww。 对于01串中0的位置,如果它之前的最大值比它之后的最小值要大就一定不可行,因为前面的换不到后面去,后面的也换不上来。 然后好像就解决了?! //Suplex #inc

七箫. 511

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

CodeForces - 920C Swap Adjacent Elements

传送门:点我 You have an arrayaconsisting ofnintegers. Each integer from1tonappears exactly once in this array. For some indicesi(1 ≤ i ≤ n - 1) it is possible to swapi-th element with(i + 1)-...

weixin_30483013的博客 222

Swap Adjacent Elements CodeForces - 920C(思维,快速排序思想)

题意:给定一个整数n和一个n的全排列,以及一个01串,01串中的0表示第i位不能与第i+1位交换,1表示可以。问能否通过若干次交换使得序列变为1,2,...,N. 题解:根据快排的思想,我们可以把每一个零看成分界点,那么这个点左边的最大值一定会小于右边的最小值,否者一定不能完成排序,因为零的左右两边是无法交换的。 AC代码: #include <iostream> #include <cstring> #include <string> #include <

Alanrookie的博客 486

codeforces920 C. Swap Adjacent Elements【连通块 + 前缀和】

C. Swap Adjacent Elements time limit per test1 second memory limit per test256 megabytes You have an array a consisting of n integers. Each integer from 1 to n appears exactly once in this array.

nobleman 764

Codeforce - 920C- Swap Adjacent Elements 排序|思维

题意输入n 再输入n个数为1~n的一种排列 再输入n-1个1或0,1表示该元素可以和后面的元素进行交换,0表示不能和后面的元素进行交换 让我们判断这个数组能否经过交换得到一个递增序列分析我们发现连续的1的范围内再加上后面一个0 此区间内任意一个元素是可以通过向后交换去到任意位置的 因为连续的1表示区间内所有元素不仅可以向后交换,也可以说是后一个元素可以向前交换。然而0前面的元素却不能交

qq_33859479的博客 300

Educational Codeforces Round 37 [Codeforces920]

题目链接 官方题解 A. Swap Adjacent Elements 题目大意 在长度为nnn的草坪上,有kkk个水龙头,第iii个水龙头位置为xixix_i,水龙头的水在打开后第jjj秒会对[x-(j-1), x+(j-1)]内的所有草坪洒水。现在同时打开所有水龙头,求最短多少秒时所有草坪都能被洒到水? 思路 - 模拟 相邻两个水龙头之间的草坪全部能被洒水需要cur−l...

idealism_xxm的专栏 355

一道巨简单的签到题

A. Remove Duplicatestime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputPetya has an array aa consisting of nn integers. He wants to remove duplicate (...

甜晨流年 696

C. Swap Adjacent Elements

You have an array a consisting of n integers. Each integer from 1 to n appears exactly once in this array. For some indices i (1 ≤ i ≤ n - 1) it is possible to swap i-th element with (i + 1)-

哇-WA 的博客 926

CF920C---Swap Adjacent Elements

谷歌翻译: 你有一个由n个整数组成的数组。从1到n的每个整数在此数组中只出现一次。 对于某些索引i(1≤i≤n - 1),可以将第i个元素与(i + 1)个交换,对于其他索引则不可能。您可以按任何顺序执行任意数量的交换操作。使用(i + 1)-th交换第i个元素的次数没有限制(如果不禁止该位置)。 你能否按升序对这个数组进行排序,执行一系列交换操作? Input 第一行包含一个整数n(2≤n≤...

NIRVANA REBIRTH 405

920C. Swap Adjacent Elements

You have an array a consisting of n integers. Each integer from 1 to n appears exactly once in this array.For some indices i (1 ≤ i ≤ n - 1) it is possible to swap i-th element with (i + 1)-th, for ot...

码农的一亩三分地 347
上一篇: codeforces 919 D Substring
下一篇: codeforces 913 A Modular Exponentiation
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值