当前位置: 首页 > news >正文

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;}
http://www.jsqmd.com/news/306535/

相关文章:

  • 老照片修复神器!Qwen-Image-Edit-2511一键去痕+智能上色
  • GTE中文语义模型实战解析|CPU友好型相似度服务部署指南
  • [特殊字符] Local Moondream2解决痛点:提升设计师图像反推效率50%
  • [ICPC 2024 Chengdu R] Recover Statistics题解
  • YOLOv12官版镜像如何提升小目标检测能力?详解
  • CogVideoX-2b真实输出:不同提示词下视频质量对比分析
  • 2026年初两坝一峡定制服务深度评测与选型指南
  • AI绘画交互体验升级:SDXL-Turbo打破传统生成等待模式
  • 未来会支持英文吗?当前仅限中文识别说明
  • AI智能二维码工坊效率提升:自动化脚本调用生成接口示例
  • Swin2SR艺术创作应用:概念草图转高精度成品图案例分享
  • GLM-4-9B-Chat-1M效果对比:与云端模型的安全性差异
  • 阶跃星辰凭什么拿最多的钱
  • 2026年长沙短视频运营机构选购指南与实力排名
  • 2026年公证书翻译服务商综合选购指南
  • 2026年湖北糊树脂点价服务商综合评估与选型指南
  • 2026年知名的快速门/PVC快速门高评价厂家推荐榜
  • 万物识别模型部署踩坑记录,这些问题你可能也会遇到
  • 5分钟搞定!ollama+Llama-3.2-3B文本生成初体验
  • Windows环境下rs232串口调试工具深度剖析
  • GTE文本向量-large效果对比:中文通用领域下句子嵌入相似度计算准确率实测报告
  • 鹰眼目标检测实战案例:YOLOv8多场景物体识别详细步骤
  • 多核MCU下Keil调试JTAG链路连接策略完整指南
  • 告别复杂配置,CAM++镜像实现说话人识别开箱即用
  • MT5中文改写在数字人对话系统应用:同一意图生成多轮自然对话变体
  • Hunyuan-HY-MT1.5-1.8B部署教程:Accelerate多卡支持配置
  • 一键启动阿里中文语音识别模型,科哥镜像开箱即用超省心
  • RexUniNLU在金融合规场景应用:合同关键条款抽取与风险点识别实操
  • Qwen3-4B Instruct-2507惊艳效果:0.0 Temperature下确定性代码生成验证
  • Qwen-Image-2512极速文生图:5分钟搭建你的AI艺术工作室