
题意:
一个无重复数字的序列,能否反转一个区间使其成为单增序列。
解析:
记录每个点的值和初始下标,然后排序。
对于排好序的序列进行遍历,找出第一段和原序列下标不同的区间并且标记(此区间即为翻转的区间),如果还出现其他的不同区间则不符题意。
- #include
- using namespace std;
- #define int long long
- const int N=2e5+5;
- int t,n,s;
- struct node{
- int id,k;
- bool operator<(const node& t)const{
- return k
- }
- }a[N];
- signed main(){
- scanf("%lld",&n);
- for(int i=1;i<=n;i++){
- scanf("%lld",&a[i].k);
- a[i].id=i;
- }
- sort(a+1,a+n+1);
- int l=-1,r,f=1;
- for(int i=1;i
- if(a[i].id!=i){
- s=1;
- if(l==-1){
- l=i,r=i;
- int p=a[i].id;
- for(int j=i+1;j<=n;j++){
- if(a[j].id==p-1) r++,p--;
- else break;
- }
- i=r;
- }
- else{
- f=0;
- break;
- }
- }
- }
- if(!s) l=r=1;
- if(f) cout<<"yes"<
" "< - else cout<<"no";
- return 0;
- }
-
相关阅读:
基于DE10-Standard Cyclone V SoC FPGA学习---开发板简介
企业应如何选择合适的电子采购软件?
pillow库,PIL库
探秘SuperCLUE-Safety:为中文大模型打造的多轮对抗安全新框架
C#&Winform&ListView实现缺陷图片浏览器
装饰模式~
【M malloc送书第二期】朋友圈大佬都去读研了,这份备考书单我码住了!
SQL优化的几种方法
IBM LinuxONE Community Cloud 免费试用申请教程
Mybatis 一级缓存和二级缓存原理区别 (图文详解)
-
原文地址:https://blog.csdn.net/JungleZRD/article/details/133579161