CF::B. Odd Swap Sort

2023-10-27

题目大意:有多组测试数据,每组测试数据为一个长度为n的正整数数组。问是否可以通过任意此特定操作(每次操作可以选择挨着的一个为奇数,一个为偶数的两个数交换)使数组变为不严格的升序数组。如果可以的话输出“YES”,否则输出“NO”。

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given an array a1,a2,…,ana1,a2,…,an. You can perform operations on the array. In each operation you can choose an integer ii (1≤i<n1≤i<n), and swap elements aiai and ai+1ai+1 of the array, if ai+ai+1ai+ai+1 is odd.

Determine whether it can be sorted in non-decreasing order using this operation any number of times.

Input

Each test contains multiple test cases. The first line contains a single integer tt (1≤t≤1051≤t≤105) — the number of test cases. Description of the test cases follows.

The first line of each test case contains a single integer nn (1≤n≤1051≤n≤105) — the length of the array.

The second line of each test case contains nn integers a1,a2,…,ana1,a2,…,an (1≤ai≤1091≤ai≤109) — the elements of the array.

It is guaranteed that the sum of nn over all test cases does not exceed 2⋅1052⋅105.

Output

For each test case, print "Yes" or "No" depending on whether you can or can not sort the given array.

You may print each letter in any case (for example, "YES", "Yes", "yes", "yEs" will all be recognized as positive answer).

Example

input

Copy

4
4
1 6 31 14
2
4 2
5
2 9 6 7 10
3
6 6 6

output

Copy

Yes
No
No
Yes

Note

In the first test case, we can simply swap 3131 and 1414 (31+14=4531+14=45 which is odd) and obtain the non-decreasing array [1,6,14,31][1,6,14,31].

In the second test case, the only way we could sort the array is by swapping 44 and 22, but this is impossible, since their sum 4+2=64+2=6 is even.

In the third test case, there is no way to make the array non-decreasing.

In the fourth test case, the array is already non-decreasing.

解题思路:由于挨着的两个数必须一奇一偶才能交换,得出偶数相连和奇数相连的情况是不可以进行交换。所以可以把数组中的元素分为奇数和偶数两个部分。可以发现,如果奇数数组中或是偶数数组中有逆序的情况,是无法通过题目中的特定操作来把数组变为不严格的升序数组的。
 

#include<iostream>
using namespace std;
const int N =1e5+10;
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        int a[N],b[N];
        int aa=0,bb=0;
        for(int i=0;i<n;i++)
        {
            int x;
            scanf("%d",&x);
            if(x%2!=0) a[aa++]=x;
            else b[bb++]=x;
        }
        int f=1;
        for(int i=0;i<aa-1;i++)
        {
            if(a[i]>a[i+1]) 
            {
                f=0;
                break;
            }
        }
        for(int i=0;i<bb-1;i++)
        {
            if(b[i]>b[i+1])
            {
                f=0;
                break;
            }
        }
        if(f==1) cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CF::B. Odd Swap Sort 的相关文章

  • MDK 编译错误:multiply defined (重复定义)

    这个代码实现很简单 出现重复定义首先检查了自己的头文件 发现没问题 后来经过师兄的点拨 发现他提示后面有 表示有两个头文件key1 c和key c 马上检查了工程 果然发现有两个 c文件 删除一个即可解决问题

随机推荐

  • 广度优先探索例题java_LeetCode:广度优先搜索(BFS)算法(常见面试题)

    今天推荐一道常见的面试算法题 比较实用也比较常见 一 认识广度优先搜索算法 广度优先搜索 BFS 算法是图的一种遍历方法 它的核心思想是从图的某一个节点开始 依次遍历相邻节点 再从这些相邻节点继续向外层节点遍历 直到连通图的所有节点均被访问
  • Django-项目构建(一)

    环境 python3 Django2 window10 工具 pycharm 构建项目前期准备工作 安装python3 Django2 等 略 一 使用git Bash Here 打开git bash Here 构建项目命令 django
  • java取html中的table_从一段html的table标签中按列提取信息

    我们平时经常会遇到提取某个html中某个table的信息 比如 我们要提取出序号 登记编号 出质人等等 我的思路是先通过正则锁定该table 在通过Jsoup来按列解析内容 我将提取信息的过程抽取出了一个方法 其中内含Jsoup和Regex
  • idea配置使用git以及ssh key的介绍使用

    文章目录 1 Git GUI 的使用 2 ssh key 的介绍和使用 安装ssh key 3 idea中配置并使用git idea配置git 1 Git GUI 的使用 首先先将 git gui 汉化一下 把msgs文件夹copy到 Gi
  • 本地把虚拟光驱传到服务器,将文件传到服务器

    将文件传到服务器 内容精选 换一换 监控数据上报功能可以将系统中采集到的监控数据写入到文本文件 并以FTP或SFTP的形式上传到指定的服务器中 使用该功能前 管理员需要在FusionInsight Manager页面进行相关配置 监控数据上
  • windows服务程序中创建用户进程

    最近碰到个问题 需要在服务中检测用户桌面的情况 但是服务程序都是SYSTEM账户下运行 属于Session0 不能检测到用户桌面的情况 所以就需要另启一个用户进程来获取这些信息 然后发送给服务 所以就用到了 CreateProcessAsU
  • 卷积神经网络系列之卷积/池化后特征图大小怎么计算??

    1 卷积后的大小 W 矩阵宽 H 矩阵高 F 卷积核宽和高 P padding 需要填充的0的个数 N 卷积核的个数 S 步长 width 卷积后输出矩阵的宽 height 卷积后输出矩阵的高 width W F 2P S 1 向下取整 h
  • 小米路由器mini 安装openWrt+更新源+挂载U盘+安装python

    刚刚入手一个小米路由器mini 本来就是打算装openWrt的 想试试玩玩看 刷openwrt的基本流程是参考的如下博主的文章 http www right com cn forum thread 147929 1 1 html 没有遇到什
  • BUUCTF [极客大挑战 2019]FinalSQL

    极客大挑战 2019 FinalSQL 操作 脚本 总结 操作 打开题目 又是这个鬼 跟着他的流程走 点按钮 让我们试试别的 告诉我们对了 但是不是这张表 埋坑 怀疑这个地址是存在sql注入的 经过fuzz 发现过滤了空格 union之类的
  • DOM方式实现Excel导入

    DOM解析Excel 在我们的工作场景中经常会遇到数据录入的需求 有些批量数据录入太麻烦 就需要用到批量导入的方式来提高效率 这就涉及到读取Excel数据的技术 Appache Poi提供了DOM解析和SAX解析两种方式 本篇主要记录自己工
  • Windows Terminal 安装gsudo插件

    Gsudo Windows下类似于linux的sudo 可用于提权 新建 Windows Terminal 标签页时可以用于新建有管理员的页面 或者直接sudo将当前页面提权 需要在安装过程中把sudo命令和gsudo命令建立关联 Powe
  • elasticsearch python连接池吗_了解Elasticsearch及其与Python的对接实现

    什么是 Elasticsearch 但我们想查数据的时候就免不了搜索 搜索就离不开搜索引擎 百度 谷歌都是一个非常庞大复杂的搜索引擎 他们几乎索引了互联网上开放的所有网页和数据 然而对于我们自己的业务数据来说 肯定就没必要用这么复杂的技术了
  • 使用的工具

    文档 devdocs 开发知识 css tricks css技巧分享 开发工具 可以检测前端代码规范的工具 sonarlint 还未用过 样式工具 collect ui 用来查看设计的ui界面参考 其他工具 虚拟号码生成 https sms
  • CentOS8配置yum/dnf镜像源

    Centos8 dnf命令 DNF意思是 Dandified Yum 这是下一代的yum软件包管理器 Yum的派生 Centos8开始使用dnf工具来管理软件包 它可以在基于RPM的Linux发行版上安装 更新和删除软件包 它会自动计算依赖
  • MATLAB克劳特算法,克劳特(Crout)(LU)分解法求解线性方程组的matlab实现

    克劳特 Crout LU 分解法求解线性方程组的matlab实现 由会员分享 可在线阅读 更多相关 克劳特 Crout LU 分解法求解线性方程组的matlab实现 3页珍藏版 请在人人文库网上搜索 1 1 克劳特 Crout LU 分解法
  • c语言课程主要目的和内容,C语言程序设计课程教学大纲

    C语言程序设计课程教学大纲 C语言程序设计课程教学大纲 一 本课程的性质 目的和任务 1 课程的性质 本课程是计算机科学与技术专业的一门重要的专业基础课程 它既可以为其它专业课程奠定程序设计的基础 又可以作为其它专业课程的程序设计工具 2
  • OpenWRT 增加内核模块及应用方法

    进入package目录 创建模块目录 cd mcp branches V1 1 beta1 mcp package mkdir example 进入example目录 创建Makefile文件和代码路径 cd example touch M
  • VMware虚拟机Linux系统根目录空间扩充操作

    VMWare虚拟机安装的应用多了 导致根目录空间不足 有没有办法可以将根目录空间进行扩充呢 经过搜集各各资料 顺利解决问题 把服务器的空间由6G扩成8G 现将执行全过程总结如下 以 供分享 首先 介绍下大体的解决思路 要想扩充 必须要有一块
  • 最完整的分布式架构设计图谱

    我们身处于一个充斥着分布式系统解决方案的计算机时代 无论是支付宝 微信这样顶级流量产品 还是区块链 IOT 等热门概念 抑或如火如荼的容器生态技术如 Kubernetes 其背后的技术架构核心都离不开分布式系统 为什么要懂分布式架构设计 系
  • CF::B. Odd Swap Sort

    题目大意 有多组测试数据 每组测试数据为一个长度为n的正整数数组 问是否可以通过任意此特定操作 每次操作可以选择挨着的一个为奇数 一个为偶数的两个数交换 使数组变为不严格的升序数组 如果可以的话输出 YES 否则输出 NO time lim