HDU 5532——Almost Sorted Array——————【技巧】
Almost Sorted Array
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 236 Accepted Submission(s): 113
We say an array is sorted if its elements are in non-decreasing order or non-increasing order. We say an array is almost sorted if we can remove exactly one element from it, and the remaining array is sorted. Now you are given an array a1,a2,…,an, is it almost sorted?
1≤T≤2000
2≤n≤105
1≤ai≤105
There are at most 20 test cases with n>1000.
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
const int maxn = 100010;
const int INF = 0x3f3f3f3f;
int a[maxn];
bool jud1(int n){
int tmp = a[2];
for(int i = 2; i <=n; i++){
if(tmp > a[i]){
return false;
}else{
tmp = a[i];
}
}
return true;
}
bool jud2(int n){
int tmp = a[2];
for(int i = 2; i <= n; i++){
if(tmp < a[i]){
return false;
}else{
tmp = a[i];
}
}
return true;
}
bool jud3(int n){
a[0] = 0; a[n+1] = INF;
int tim = 0;
int fir = 0;
for(int i = 2; i <= n; i++){
if(a[i]<a[i-1]){
if(fir == 1)
return false;
fir++;
if(a[i+1]>=a[i-1]||a[i]>=a[i-2]){
continue;
}else{
return false;
}
}
}
return true;
}
bool jud4(int n){
a[0] = INF; a[n+1] = 0;
int tim = 0;
int fir = 0;
for(int i = 2; i <= n; i++){
if(a[i]>a[i-1]){
if(fir == 1)
return false;
fir++;
if(a[i+1]<=a[i-1]||a[i]<=a[i-2]){
continue;
}else{
return false;
}
}
}
return true;
}
int main(){
int T,n,m;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(int i = 1; i <= n; i++){
scanf("%d",&a[i]);
}
if(jud1(n)){
puts("YES");
continue;
}
if(jud2(n)){
puts("YES");
continue;
}
if(jud3(n)){
puts("YES");
continue;
}
if(jud4(n)){
puts("YES");
continue;
}
puts("NO");
}
return 0;
}
/*
555
4
8 6 7 8
4
8 6 7 7
5
1 2 1000 7 8
5
1 2 100 2 3
4
1 1 1 1
6
7 8 1 1 1 10 */
HDU 5532——Almost Sorted Array——————【技巧】的更多相关文章
- hdu 5532 Almost Sorted Array(模拟)
Problem Description We are all familiar with sorting algorithms: quick sort, merge sort, heap sort, ...
- HDU 5532 Almost Sorted Array (最长非递减子序列)
题目链接 Problem Description We are all familiar with sorting algorithms: quick sort, merge sort, heap s ...
- hdu 5532 Almost Sorted Array (水题)
Almost Sorted Array Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- hdu 5532 Almost Sorted Array nlogn 的最长非严格单调子序列
Almost Sorted Array Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- HDU - 5532 Almost Sorted Array (最长非严格单调子序列)
We are all familiar with sorting algorithms: quick sort, merge sort, heap sort, insertion sort, sele ...
- hdu 5532 Almost Sorted Array
http://acm.hdu.edu.cn/showproblem.php?pid=5532 题目大意: 给你一个不规则的序列,问是否能够通过删除一个元素使其成为一个有序的序列(递增或递减(其中相邻 ...
- 【HDU 5532 Almost Sorted Array】水题,模拟
给出一个序列(长度>=2),问去掉一个元素后是否能成为单调不降序列或单调不增序列. 对任一序列,先假设其可改造为单调不降序列,若成立则输出YES,不成立再假设其可改造为单调不增序列,若成立则输出 ...
- 2015ACM/ICPC亚洲区长春站 F hdu 5533 Almost Sorted Array
Almost Sorted Array Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- HDU 5532 / 2015ACM/ICPC亚洲区长春站 F.Almost Sorted Array
Almost Sorted Array Problem Description We are all familiar with sorting algorithms: quick sort, mer ...
随机推荐
- JavsScript中JSON相关
1.JSON.parse(jsonString) JSON.parse(jsonString):将一个JSON格式的字符串字面值,转换成JSON对象,它的逆运算方法是JSON.stringify(ob ...
- c++类 初始化const数据成员
对于const或引用类型的类成员,唯一的初始化方式是在构造函数中使用成员函数初始化列表.构造函数体中的赋值语句是无效的 正确 #include<iostream> using namesp ...
- Educational Codeforces Round 61 (Rated for Div. 2)F(区间DP,思维,枚举)
#include<bits/stdc++.h>typedef long long ll;const int inf=0x3f3f3f3f;using namespace std;char ...
- hdu1845(a^b的因子和%p)
题目链接:http://poj.org/problem?id=1845 思路: 1.整数唯一分解定理: 任意正整数都有且只有一种方式写出其素因子的乘积表达式. a=(p1^k1)*(p2^k2)*(p ...
- loj #2025. 「JLOI / SHOI2016」方
#2025. 「JLOI / SHOI2016」方 题目描述 上帝说,不要圆,要方,于是便有了这道题. 由于我们应该方,而且最好能够尽量方,所以上帝派我们来找正方形.上帝把我们派到了一个有 NNN ...
- Shell-2-命令之乐
1.cat (1)基本用法 [root@cai tmp]# cat 1.txt 2.txt this is a test1 this is a test 2 (2)cat -s file(删除额外空白 ...
- kuangbin专题十六 KMP&&扩展KMP HDU2609 How many (最小字符串表示法)
Give you n ( n < 10000) necklaces ,the length of necklace will not large than 100,tell me How man ...
- CoreData 数据库
封装CoreManager类 @implementation CoreDataManager { //上下文 NSManagedObjectContext *_ctx; } //单例 +(instan ...
- JAVA第二个程序
关于计算基础问题华氏度与摄氏度互相转化问题 题目内容: 写一个将华氏温度转换成摄氏温度的程序,转换的公式是: °F = (9/5)*°C + 32 其中C表示摄氏温度,F表示华氏温度. 程序的输入是一 ...
- #333 Div2 Problem B Approximating a Constant Range(尺取法)
题目:http://codeforces.com/contest/602/problem/B 题意 :给出一个含有 n 个数的区间,要求找出一个最大的连续子区间使得这个子区间的最大值和最小值的差值不超 ...