hdu6197最长增长序列 二分法
来源:互联网 发布:windows服务器监控 编辑:程序博客网 时间:2024/05/18 01:10
array array array
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 537 Accepted Submission(s): 324
Problem Description
One day, Kaitou Kiddo had stolen a priceless diamond ring. But detective Conan blocked Kiddo's path to escape from the museum. But Kiddo didn't want to give it back. So, Kiddo asked Conan a question. If Conan could give a right answer, Kiddo would return the ring to the museum.
Kiddo: "I have an arrayA and a number k , if you can choose exactly k elements from A and erase them, then the remaining array is in non-increasing order or non-decreasing order, we say A is a magic array. Now I want you to tell me whether A is a magic array. " Conan: "emmmmm..." Now, Conan seems to be in trouble, can you help him?
Kiddo: "I have an array
Input
The first line contains an integer T indicating the total number of test cases. Each test case starts with two integers n and k in one line, then one line with n integers: A1,A2…An .
1≤T≤20
1≤n≤105
0≤k≤n
1≤Ai≤105
Output
For each test case, please output "A is a magic array." if it is a magic array. Otherwise, output "A is not a magic array." (without quotes).
Sample Input
34 11 4 3 75 24 1 3 1 26 11 4 3 5 4 6
Sample Output
A is a magic array.A is a magic array.A is not a magic array.
Source
2017 ACM/ICPC Asia Regional Shenyang Online
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int maxn=1e5+10;int a[maxn],b[maxn];int LISS(int n)//最长增长序列 {int num=0;for(int i=0;i<n;i++){if(!num||a[i]>=b[num-1]) b[num++] = a[i];else *upper_bound(b,b+num,a[i]) = a[i];//大于的元素的位置指针 }return num;}int check(int n,int k){if(n-LISS(n)<=k) return 1;for(int i=0;i<n;i++) a[i]=-a[i];if(n-LISS(n)<=k) return 1;return 0;}int main(){int t;scanf("%d",&t);while(t--){int n,k;scanf("%d%d",&n,&k);for(int i=0;i<n;i++)scanf("%d",&a[i]);if(check(n,k))puts("A is a magic array.");else puts("A is not a magic array.");}return 0;}
阅读全文
0 0
- hdu6197最长增长序列 二分法
- hdu6197(最长上升子序列)
- hdu6197 最长上升子序列(LIS)长度
- HDU6197 最长有序子序列 DP+二分查找
- 最长增长子序列
- uva10635(最长增长子序列)
- uva10599(最长增长子序列)
- 最长增长子序列 LIS
- HDU6197 array array array 最长上升子序列(模板题)
- 【2017沈阳网络赛】1004 hdu6197 array array array 最长不下降子序列
- 用二分法寻找最长连续单调递增子序列
- hdu 1950 Bridging signals--二分法求最长上升子序列
- hdu 4604 Deque (二分法求最长单调子序列)
- NYOJ17 单调递增最长子序列 【二分法】+【动态规划】
- HDU 1025 最长递增子序列 DP+二分法
- UVALive 7374 Racing Gems (最长上升子序列--二分法)
- UVA - 10534 Wavio Sequence (二分法最长上升子序列)
- 最长递增子序列(二分法O(nlgn))
- 排序的代价
- gnuplot画出不同的类
- javascript常见语句总结
- C语言 快速排序函数
- 使用gradle创建Akka项目
- hdu6197最长增长序列 二分法
- 线性回归多重共线性优化
- 作业3
- Android-Fragment源码解析
- ERROR : arm-linux-ld:u-boot.lds:1: ignoring invalid character `#' in expression
- 内存拷贝和对齐读取
- 选苹果
- springboot中使用actuator进行监控
- iOS之人工智能理解