array array array-- 2017 ACM/ICPC Asia Regional Shenyang Online
来源:互联网 发布:youtube显示无网络连接 编辑:程序博客网 时间:2024/06/10 03:42
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.解析:此题换位思考就是要求给定的数组的最长递增序列或者是最长递减序列,倘若要是用线性DP的话绝对会超时,所以这题运用了改进的二分查找的办法,这样就会使时间复杂度在O(nlogn);#include"iostream"using namespace std;int ai[101100];int ci[101100];int bi[101100];int n;int lis1(int ai[101100]){ bi[0]=-10000;//把B[0]设为最小,假设任何输入都大于-10000; bi[1]=ai[0];//初始时,最大递增子序列长度为1的最末元素为a1 int Len = 1;//Len为当前最大递增子序列长度,初始化为1; int p,r,m;//p,r,m分别为二分查找的上界,下界和中点; for(int i = 1;i<n;i++) { p=0;r=Len; while(p<=r) //二分查找最末元素小于ai+1的长度最大的最大递增子序列; { m = (p+r)/2; if(bi[m]<ai[i]) p = m+1; else r = m-1; } bi[p] = ai[i];//将长度为p的最大递增子序列的当前最末元素置为ai+1; if(p>Len) Len++;//更新当前最大递增子序列长度; } return Len;}int main(){ int T; cin>>T; while(T--) { int k; cin>>n>>k; for(int i=0;i<n;i++) { cin>>ai[i]; } for(int i=0;i<n;i++) { ci[i]=ai[n-i-1]; } int num=lis1(ai); int num1=lis1(ci); if(max(num,num1)+k>=n) cout<<"A is a magic array."<<endl; else cout<<"A is not a magic array."<<endl; } return 0;}
阅读全文
0 0
- 2017 ACM/ICPC Asia Regional Shenyang Online//array array array
- array array array-- 2017 ACM/ICPC Asia Regional Shenyang Online
- 2017 ACM/ICPC Asia Regional Shenyang Online array
- 2017 ACM/ICPC Asia Regional Shenyang Online 1004 & hdu6197:array array array
- 2017 ACM/ICPC Asia Regional Shenyang Online 1004 array array array
- HDU-2017 ACM/ICPC Asia Regional Shenyang Online-1004-array array array
- 【2017 ACM/ICPC Asia Regional Shenyang Online 1004】hdu 6197 array array array
- 2017 ACM/ICPC Asia Regional Shenyang Online 1004 array array array
- array array array (2017 ACM/ICPC Asia Regional Shenyang Online 1004)简单DP,最长公共子序列(Ologn)
- 【HDU6197 2017 ACM ICPC Asia Regional Shenyang Online D】【LIS 最长不下降序列】array array array 数列删除恰好K个数,使得恰好
- 2017 ACM/ICPC Asia Regional Shenyang Online 1004 array array array 最长上升子序列(板子可以更新啦,复杂度nlog2(n))
- 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
- JSP
- myeclipse的项目红色感叹号
- window10 esc和锁定大写键交换
- 数据结构(Java)---栈
- 语音助手产品攻击——海豚音攻击
- array array array-- 2017 ACM/ICPC Asia Regional Shenyang Online
- 数据库视频总结(三)
- Unity3D 设计模式几大原则详解
- BFS——NYOJ 21 三个水杯
- c++学习之用c++写一个教务管理系统
- 解除Linux最大进程数和最大文件句柄打开数限制
- 51nod 1832 先序遍历与后序遍历(DFS)
- 深入理解直方图
- 虚表指针初始化