news 2026/9/18 6:17:22

P14972 『GTOI - 2C』Fliping题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
P14972 『GTOI - 2C』Fliping题解

P14972 『GTOI - 2C』Fliping

题目描述

给出一个1 ∼ n 1\sim n1n的排列a aa,请问能否通过不超过3000 30003000次操作使数组a aa单调递增

对于每次操作,你可以翻转一个长度至少3 \bm33的区间。

其中,“翻转”指的是:例如数组a = { 5 , 4 , 3 , 2 , 1 } a = \{5,4,3,2,1\}a={5,4,3,2,1},翻转区间是[ 2 , 4 ] [2,4][2,4]的话,结果是a = { 5 , 2 , 3 , 4 , 1 } a = \{5,2,3,4,1\}a={5,2,3,4,1}

如果可以,输出一种构造方案,具体请参考【输出格式】

如果不可以,输出-1

输入格式

输入共两行。

第一行,一个正整数n nn

第二行,一个1 ∼ n 1\sim n1n的排列a aa

输出格式

如果存在构造方案:

  • 输出一个非负整数m mm表示总共需要操作的次数。
  • 然后输出m mm行,每行两个正整数l , r l,rl,r表示每次翻转的区间[ l , r ] [l,r][l,r]

本题使用 Special Judge ,若有多组构造方案,任意输出一组即可。

如果不存在构造方案,输出-1即可。

输入输出样例 #1

输入 #1

5 2 5 4 3 1

输出 #1

3 1 4 1 3 1 5

说明/提示

【数据范围】

本题采用捆绑测试。

对于100 % 100\%100%的数据,保证1 ≤ n ≤ 2000 1\leq n\leq 20001n2000{ a } \{a\}{a}1 ∼ n 1\sim n1n的排列。

Subtask \text{Subtask}Subtaskn ≤ n \leqn特殊性质分数
1 117 7720 2020
2 2250 5050^10 1010
3 331000 10001000^10 1010
4 441500 15001500^10 1010
5 552000 20002000保证a i a_iai随机生成10 1010
6 66^保证a i ≡ i ( m o d 2 ) a_i\equiv i\pmod 2aii(mod2)20 2020
7 77^20 2020

思路

直接每次行则立刻转,否则转最后再转即可,然后<=5时特判一下。

代码见下

#include<bits/stdc++.h>usingnamespacestd;longlongn,a[2005];structone{longlongl,r;};vector<one>v;intmain(){cin>>n;for(inti=1;i<=n;i++){cin>>a[i];}for(inti=1,k;i<=n;i++){for(intj=i;j<=n;j++){if(a[j]==i){k=j;break;}}if(i==k){continue;}if(k-i>=2){v.push_back({i,k});for(intj=i;j<=(i+k)/2;j++){swap(a[j],a[i+k-j]);}}elseif(n-k>=2){v.push_back({k,n});for(intj=k;j<=(k+n)/2;j++){swap(a[j],a[k+n-j]);}v.push_back({i,n});for(intj=i;j<=(i+n)/2;j++){swap(a[j],a[i+n-j]);}}else{if(k==n){if(n<=4){cout<<-1<<endl;return0;}else{v.push_back({n-4,n-1});v.push_back({n-3,n-1});v.push_back({n-4,n});v.push_back({n-4,n-1});cout<<v.size()<<endl;for(intj=0;j<v.size();j++){cout<<v[j].l<<" "<<v[j].r<<endl;}return0;}}else{if(a[n]==n){if(n<=5){cout<<-1<<endl;return0;}else{n--;v.push_back({n-4,n-1});v.push_back({n-3,n-1});v.push_back({n-4,n});v.push_back({n-4,n-1});cout<<v.size()<<endl;for(intj=0;j<v.size();j++){cout<<v[j].l<<" "<<v[j].r<<endl;}return0;}}else{if(n<=5){cout<<-1<<endl;return0;}else{v.push_back({n-2,n});n--;v.push_back({n-4,n-1});v.push_back({n-3,n-1});v.push_back({n-4,n});v.push_back({n-4,n-1});cout<<v.size()<<endl;for(intj=0;j<v.size();j++){cout<<v[j].l<<" "<<v[j].r<<endl;}return0;}}}}}cout<<v.size()<<endl;for(intj=0;j<v.size();j++){cout<<v[j].l<<" "<<v[j].r<<endl;}return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 21:42:43

情感强度可调节?IndexTTS 2.0内置向量控制体验

情感强度可调节&#xff1f;IndexTTS 2.0内置向量控制体验 你有没有试过这样&#xff1a;写好一段“愤怒地质问”的台词&#xff0c;点下生成按钮&#xff0c;结果AI念出来像在读天气预报&#xff1f;或者想让配音语速快30%卡准短视频转场节奏&#xff0c;却只能靠后期拉伸音频…

作者头像 李华
网站建设 2026/8/24 22:36:42

Qwen2.5-0.5B降本部署案例:使用4090D×4实现高性价比推理服务

Qwen2.5-0.5B降本部署案例&#xff1a;使用4090D4实现高性价比推理服务 1. 为什么选Qwen2.5-0.5B-Instruct做轻量级落地&#xff1f; 你可能已经注意到&#xff0c;现在大模型应用越来越“卷”——不是比谁参数多&#xff0c;而是比谁跑得稳、谁用得省、谁上线快。在实际业务…

作者头像 李华
网站建设 2026/9/17 16:01:57

无需编程!Fun-ASR WebUI界面手把手操作教程

无需编程&#xff01;Fun-ASR WebUI界面手把手操作教程 你是不是也遇到过这些情况&#xff1a;会议录音堆在文件夹里没时间听&#xff0c;客户语音留言转文字总出错&#xff0c;培训音频想整理成笔记却要花半天&#xff1f;别再复制粘贴到网页版工具、别再折腾Python环境、更别…

作者头像 李华
网站建设 2026/9/11 20:26:01

告别复杂配置:Z-Image-Turbo极速创作室,开箱即用的AI绘画神器

告别复杂配置&#xff1a;Z-Image-Turbo极速创作室&#xff0c;开箱即用的AI绘画神器 你有没有过这样的体验&#xff1a;看到一张惊艳的AI生成图&#xff0c;立刻想试试——结果点开教程&#xff0c;第一行就是“请先安装CUDA 12.1、PyTorch 2.3、xformers 0.0.25……”&#…

作者头像 李华
网站建设 2026/9/17 0:54:21

ms-swift推理性能优化,PyTorch与vLLM对比实测

ms-swift推理性能优化&#xff0c;PyTorch与vLLM对比实测 在大模型落地应用中&#xff0c;推理性能直接决定服务响应速度、并发承载能力和硬件成本。当模型完成微调后&#xff0c;如何让其“跑得快、跑得稳、跑得省”&#xff0c;是工程化部署的关键一环。ms-swift作为魔搭社区…

作者头像 李华