2017 ACM/ICPC Asia Regional Shenyang Online D
来源:互联网 发布:linux 备份 编辑:程序博客网 时间:2024/06/04 23:15
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 sayA 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 integersn 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.
类似于最长递增子序列
正方来一次,反向来一次。
#include <bits/stdc++.h>using namespace std;const int MAXN = 1e5+10;int a[MAXN];int b[MAXN];int t[MAXN];int len1,len2;int main(){ int T,n,k; scanf("%d",&T); while(T--) { memset(b,0,sizeof(b)); scanf("%d %d",&n,&k); for(int i = 0; i < n; ++i) { scanf("%d",&a[i]); t[n-i-1] = a[i]; } b[1] = a[0]; int len = 1,j; for(int i = 1; i < n; ++i) { if(a[i] >= b[len]) b[++len] = a[i]; else { j = lower_bound(b+1,b+1+len,a[i])-b; b[j] = a[i]; } } len1 = n-len; memset(b,0,sizeof(b)); b[1] = t[0]; len = 1; for(int i = 1; i < n; ++i) { if(t[i] >= b[len]) b[++len] = t[i]; else { j = lower_bound(b+1,b+1+len,t[i])-b; b[j] = t[i]; } } len2 = n-len; if(k >= len1 || k >= len2) printf("A is a magic array.\n"); else printf("A is not a magic array.\n"); } return 0;}
阅读全文
0 0
- 2017 ACM/ICPC Asia Regional Shenyang Online D
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional shenyang Online
- 2015 ACM/ICPC Asia Regional Shenyang Online
- 2015 ACM/ICPC Asia Regional Shenyang Online
- 2015 ACM/ICPC Asia Regional Shenyang Online
- 2015 ACM/ICPC Asia Regional Shenyang Online
- 2015 ACM/ICPC Asia Regional Shenyang Online
- 2016 ACM/ICPC Asia Regional Shenyang Online
- Problem 1002-2017 ACM/ICPC Asia Regional Shenyang Online
- Problem 1004-2017 ACM/ICPC Asia Regional Shenyang Online
- [尺取法]2017 ACM/ICPC Asia Regional Shenyang Online 1012
- MySQL WHERE数据过滤(一)
- 判断一棵树是否是一个完全二叉树?
- timer-----计算程序时间
- HDU-2017 ACM/ICPC Asia Regional Shenyang Online-签到题
- Error Handling in ASP.NET Core
- 2017 ACM/ICPC Asia Regional Shenyang Online D
- 文件解析
- linux学习笔记(16)
- 链表的基本操作-Java
- 基于 jenkins 和 docker 的持续集成平台
- POJ3984
- centOS6.6下升级到git 2.2.X版本
- 深度学习 tensorflow例子
- Mac下Intellij IDEA快捷键部分失效