HDU 5532 Almost Sorted Array (求逆序数)
来源:互联网 发布:铠钾网络招聘 编辑:程序博客网 时间:2024/05/17 21:08
题意:
给你一组数,能否删除一个后使他成为升序或者降序
思路:
正反各求一边逆序数即可。
代码:
#include <bits/stdc++.h>using namespace std;const int MAXN=1e5+10;int a[MAXN];int b[MAXN];int n;bool solve(){ b[n]=a[n]; for(int i=n-1;i>=0;i--) b[i]=min(a[i],b[i+1]); int disorder=0; for(int i=1;i<=n;i++) if(a[i]>b[i]) disorder++; if(disorder<=1) return 1; disorder=0; b[n]=a[n]; for(int i=n-1;i>=0;i--) b[i]=max(a[i],b[i+1]); for(int i=1;i<=n;i++) if(a[i]<b[i]) disorder++; if(disorder<=1) return 1; for(int i=1;i<=n/2;i++) swap(a[i],a[n+1-i]); b[n]=a[n]; for(int i=n-1;i>=0;i--) b[i]=min(a[i],b[i+1]); disorder=0; for(int i=1;i<=n;i++) if(a[i]>b[i]) disorder++; if(disorder<=1) return 1; disorder=0; b[n]=a[n]; for(int i=n-1;i>=0;i--) b[i]=max(a[i],b[i+1]); for(int i=1;i<=n;i++) if(a[i]<b[i]) disorder++; if(disorder<=1) return 1; return 0;}int main(){ int T; scanf("%d",&T); while(T--){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); if(solve()) puts("YES"); else puts("NO"); }}
阅读全文
0 0
- HDU 5532 Almost Sorted Array (求逆序数)
- hdu 5532 Almost Sorted Array(LIS)
- 【HDU】5532 - Almost Sorted Array(LIS)
- HDU-5532 Almost Sorted Array(LIS)
- HDU 5532 Almost Sorted Array(LIS)
- hdu 5532 Almost Sorted Array
- HDU 5532 Almost Sorted Array
- HDU 5532 Almost Sorted Array
- 【HDU】 5532 Almost Sorted Array
- HDU 5532 Almost Sorted Array
- HDU 5532:Almost Sorted Array
- Almost Sorted Array HDU
- HDU 5532 Almost Sorted Array(LIS讲解+二分)
- HDU 5532 Almost Sorted Array(LIS模板题)
- HDU 5532 Almost Sorted Array [DIS]
- hdu 5532 Almost Sorted Array【思维+模拟】
- B HDU 5532 Almost Sorted Array
- HDU 5532 Almost Sorted Array (dp)
- 亲历H5移动端游戏微信支付接入及那些坑(二)——获取Openid和授权
- Tomcat7源码解读 —— 类加载器
- Z-stack3.0 Power Green的使用
- C#Net开发 手机网站和普通网站有什么区别
- ES6变量解构赋值
- HDU 5532 Almost Sorted Array (求逆序数)
- 阿里云centos7.2安装nginx
- Hibernate
- 智慧城市综合管控平台
- iOS 坐标变换
- C++智能指针解决内存泄漏问题
- table中合并单元格
- HDU 5536 Chip Factory (字典树)
- 单工、半双工、全双工、异步通信、同步通信