Codeforces Round 821 (Div. 2) C. Parity Shuffle Sorting (构造之全变成一样的)

给你一个数组 a a a ,其中有 n n n 个非负整数。你可以对它进行以下操作。

选择两个索引 l l l r r r ( 1 ≤ l < r ≤ n ) ( 1≤l<r≤n ) (1l<rn)
如果 a l + a r a_l+a_r al+ar 是奇数,则进行 a r : = a l a_r:=a_l ar:=al 运算。如果 a l + a r a_l+a_r al+ar 是偶数,则执行 a l : = a r a_l:=a_r al:=ar .求最多有 n n n 次操作的序列,使得 a a a 不递减。可以证明这总是可能的。需要注意的是,你并不需要尽量减少运算次数。

当且仅当 a 1 ≤ a 2 ≤ … ≤ a n a_1≤a_2≤…≤a_n a1a2an 时,数组 a 1 , a 2 , … , a n a_1,a_2,…,a_n a1,a2,,an 是非递减的。

输入
第一行包含一个整数 t ( 1 ≤ t ≤ 1 0 5 ) t ( 1≤t≤10^5 ) t(1t105) - 测试用例数。

每个测试用例由两行组成。每个测试用例的第一行包含一个整数 n ( 1 ≤ n ≤ 1 0 5 ) n ( 1≤n≤10^5 ) n(1n105) - 数组的长度。

每个测试用例的第二行包含 n n n 个整数 a 1 , a 2 , … , a n ( 0 ≤ a i ≤ 1 0 9 ) a_1,a_2,…,a_n ( 0≤a_i≤10^9 ) a1,a2,,an(0ai109) - 数组本身。

保证所有测试用例中 n n n 的总和不超过 1 0 5 10^5 105

输出
对于每个测试用例,在第一行打印一个整数 m ( 0 ≤ m ≤ n ) m ( 0≤m≤n ) m(0mn),即操作次数。

然后打印 m m m 行。每行必须包含两个整数 l i , r i l_i,r_i li,ri ,即在 i − t h i -th ith 操作中选择的索引 ( 1 ≤ l i < r i ≤ n ) ( 1≤l_i<r_i≤n ) (1li<rin)

如果有多个解,请打印任意一个。


不递增就是 a i < = a i + 1 a_i <= a_{i+1} ai<=ai+1 ,那么就可以取一个特殊情况让所有数都相等,这样就是简单的构造方法。

还需要处理奇偶数的问题。
并且注意读题,奇偶数是操作相反而不是不能操作,本人读题的时候就读了半句话发现题做不出来。

首先让 a [ 1 ] a[1] a[1] a [ n ] a[n] a[n] 相等,如果两者相加是偶数,那么就是让 a [ 1 ] = a [ n ] a[1] = a[n] a[1]=a[n],所以之后的目标就是让所有数都等于 a [ n ] a[n] a[n],相加等于奇数时同理。

以相加为偶数为例,之后,如果中间的任何数和 a [ n ] a[n] a[n] 相加等于奇数,那么就意味着要让 a [ r ] = a [ l ] a[r] = a[l] a[r]=a[l] ,我们要让 a [ l ] = a [ n ] a[l] = a[n] a[l]=a[n],但是题目要求 l < r l < r l<r,所以就输出 1 i,如果中间的任何数和a[n]相加等于偶数,就意味着要让 a [ l ] = a [ r ] a[l] = a[r] a[l]=a[r],那么就让 a [ r ] = a [ n ] a[r] = a[n] a[r]=a[n],就输出 i n


CODE:

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;int a[N];void solve(){int n;cin >> n;bool ok = 1;for(int i = 1;i <= n;i++){cin >> a[i];if(a[i] < a[i-1])ok = 0;}if(ok){cout << 0 << endl;return;}cout << n-1 << endl;cout << 1 << ' ' << n << endl;int x;if((a[1] + a[n]) % 2 == 0){x = a[n];}else x = a[1];for(int i = 2;i <= n-1;i++){if((x + a[i]) % 2 != 0)cout << 1 << " " << i << endl;else cout << i << " " << n << endl;}
}int main(){int T;cin >> T;while(T--){solve();}return 0;
}

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

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

相关文章

react【框架原理详解】JSX 的本质、SyntheticEvent 合成事件机制、组件渲染过程、组件更新过程

JSX 的本质 JSX 代码本身并不是 HTML&#xff0c;也不是 Javascript&#xff0c;在渲染页面前&#xff0c;需先通过解析工具&#xff08;如babel&#xff09;解析之后才能在浏览器中运行。 babel官网可查看 JSX 解析后的效果 更早之前&#xff0c;Babel 会把 JSX 转译成一个 R…

AI大模型探索之路-实战篇4:DB-GPT数据应用开发框架调研实践

目录 前言一、DB-GPT总体概述二、DB-GPT关键特性1、私域问答&数据处理&RAG2、多数据源&GBI3、多模型管理4、自动化微调5、Data-Driven Multi-Agents&Plugins6、隐私安全 三、服务器资源准备1、创建实例2、打开jupyterLab 四、DB-GPT启动1、激活 conda 环境2、切…

区块链fisco联盟链搭建(二)搭建多群组联盟链

本文章只讲搭建的命令方法 以单机、四机构、三群组、八节点的星形组网拓扑为例 第一步创建并进入工作目录&#xff08;继续以fisco为例&#xff09; mkdir /fisco cd /fisco 获取搭链脚本上一篇文章区块链fisco联盟链搭建 (一)搭建单群组四节点联盟链中有 第二步生成多群组…

抖音小店没有流量不出单?归根到底,就是转化率不行!

哈喽~我是电商月月 新手做抖音小店&#xff0c;最忧愁的就是&#xff1a;店铺不出单怎么办&#xff1f; 商家通常会把没有销量的原因&#xff0c;都推向于“店铺没有流量” 但在抖音&#xff0c;这个日活量高达9亿的平台来说&#xff0c;任何商铺最不缺的应该就是流量了 但…

61850的总体建模原则

IEC 61850标准是电力系统自动化领域的一个重要标准,它定义了数据的模型和设备描述,使得不同厂家的设备之间能够实现互操作性。下面将围绕“61850的总体建模原则”展开讨论,主要包括物理设备建模基础、逻辑设备组合规则、逻辑节点功能划分、数据模型统一标准、配置文件规范描…

炒股前你要知道的股票知识

一、股票组成 A股股票组成板块有:地区板块、行业板块、证监会板块,概念板块。 其中各个板块还可以分为: A农、林、牧、渔业; B采矿业; C制造业; D电力、热力、燃气及水生产和供应业; E建筑业; F批发和零售业; G交通运输、仓储和邮政业; H住宿和餐饮业; I…

《Qt》使用Windeployqt发布程序

之前都是使用QTVS开发&#xff0c;这次直接使用QT开发&#xff0c;记录一下程序发布过程&#xff0c;方便后期使用查阅。 添加环境变量 在path目录下添加如下路径&#xff1a; 之前使用QTVS2013&#xff0c;添加如下路径 D:\App\Qt5.9.3\5.9.3\msvc2013_64\bin; D:\App\Qt…

dll文件是什么?电脑丢失某个dll文件有什么解决办法

Dll文件是什么&#xff1f;这个文件在电脑中是什么样的地位&#xff1f;如果电脑提示丢失了某个dll文件那么有什么办的解决这个问题呢&#xff1f;如何将丢失的dll文件进行修复呢&#xff1f;今天这篇文章将按就来教大家几种修复丢失dll文件问题的方法。 DLL 文件&#xff0c;全…

[Redis]基本全局命令

Redis存储方式介绍 在 Redis 中数据是以键值对的凡事存储的&#xff0c;键&#xff08;Key&#xff09;和值&#xff08;Value&#xff09;是基本的数据存储单元。以下是对 Redis 键值对的详细讲解&#xff1a; 键&#xff08;Key&#xff09;&#xff1a; 类型&#xff1a;…

JVM、JRE和JDK的区别

首先需要确定的是JDK里是包含JRE的&#xff0c;而JRE里又包含JVM&#xff0c;它们区别在于面向的服务对象不同所以进行了不同的包装。 JVM&#xff1a;JVM是面向操作系统&#xff0c;.Class字节码->机器码以及程序运行的内存的管理。 JRE&#xff1a;JRE是面向于程序的&am…

全局配置路径无法识别的解决——后端

在全局配置路径reggie.path的时候&#xff0c;无法正常启动SpringBoot项目 Value("${reggie.path}")private String basePath; 查看application.yml的配置情况: 发现path没有起作用&#xff0c;推测是格式问题&#xff0c;冒号后面空格后即可

Web API——获取DOM元素

目录 1、根据选择器来获取DOM元素 2.、根据选择器来获取DOM元素伪数组 3、根据id获取一个元素 4、通过标签类型名获取所有该标签的元素 5、通过类名获取元素 目标&#xff1a;能查找/获取DOM对象 1、根据选择器来获取DOM元素 语法&#xff1a; document.querySelector(css选择…

关于性能问题优化的小讨论

大家好&#xff0c;我是阿赵。   最近很流行把之前制作在安卓或者iOS端的游戏转成微信小程序上架&#xff0c;我所在的项目也有这样的操作。微信小程序是用WebGL来运行的&#xff0c;实际上它的性能很差&#xff0c;只有不到app端的三分之一的性能可用&#xff0c;内存方面也…

LabVIEW机器视觉技术对工业制造有什么影响?

LabVIEW机器视觉技术对工业制造产生了深远的影响&#xff0c;主要体现在以下几个方面&#xff1a; 1. 提高生产效率 LabVIEW机器视觉技术可以自动检测和分析生产线上的产品&#xff0c;提高检测速度和精度。传统的人工检测方式往往效率低下且容易出错&#xff0c;而机器视觉系…

java 数组的常见操作

在 Java 中&#xff0c;数组是一种特殊的对象&#xff0c;用于存储相同类型的多个元素。以下是一些常见的数组操作&#xff1a; 声明数组&#xff1a;使用以下语法声明一个数组&#xff0c;其中 type 是数组元素的数据类型&#xff0c;name 是数组的名称。 type[] name;例如&…

第19讲:自定义类型:结构体

目录 1.结构体类型的声明1.1 结构体回顾1.1.1 结构的声明 特殊的结构声明1.3 结构的⾃引⽤ 2. 结构体内存的对齐2.2 为什么存在内存对⻬?2.3 修改默认对⻬数 3. 结构体传参4. 结构体实现位段4.1 什么是位段4.2 位段的内存分配4.3 位段的跨平台问题4.5 位段使⽤的注意事项 正文…

梳理 JavaScript 中空数组调用 every方法返回true 带来惊讶的问题

前言 人生总是在意外之中. 情况大概是这样的. 前两天版本上线以后, 无意中发现了一个bug, 虽然不是很大, 为了不让用户使用时感觉到问题. 还是对着一个小小的bug进行了修复, 并重新在上线一次, 虽然问题不大, 但带来的时间成本还是存在的. 以及上线后用户体验并不是很好. 问题…

JVM学习-垃圾收集器(二)

Serial回收器&#xff1a;串行回收 Serial收集器是最基本、历史最悠久的收集器JDK1.3之前新生代唯一的选择Hotpot中Client模式下的默认新生代垃圾收集器采用复制算法&#xff0c;串行回收“Stop-the-world”机制的方式执行内存回收除了年轻代之外&#xff0c;Serial收集器还提…

TG-5006CG温补晶振在WiFi6无线路由器模块的应用

WiFi6无线路由器是采用了wiFi6技术的无线网络设备&#xff0c;旨在为家庭、办公室或其他场所提供高速、稳定的无线网络连接。它不仅能实现更高的数据传输速率和更低的延迟&#xff0c;还提供了更先进的加密和安全措施&#xff0c;确保用户数据安全。为了支持这些高级功能&#…

深入 Rust 标准库,Rust标准库源代码系统分析

系列文章目录 送书第一期 《用户画像&#xff1a;平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 送书第三期 《深入浅出Java虚拟机》 送书第四期 《AI时代项目经理成长之道》 …