array array array

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 459    Accepted Submission(s): 282

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 array A

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?

 
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
3
4 1
1 4 3 7
5 2
4 1 3 1 2
6 1
1 4 3 5 4 6
 
Sample Output
A is a magic array.
A is a magic array.
A is not a magic array.
 
Source
 
这道题转换之后就是求最长上升子序列长度,此外,发现了一种二分求LIS方法。
 
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<vector>
#include<cmath>
#include<string>
#define LL long long
const int maxn=1e5+5;
using namespace std;
int a[maxn],b[maxn],c[maxn];
int n;
int LIS(int *d){
memset(c,0,sizeof(c));
c[1]=d[1];
int l,r,mid,len=1;
for(int i=2;i<=n;i++){
l=1;
r=len;
while(l<=r){
mid=(l+r)/2;
if(c[mid]<=d[i]) l=mid+1;
else r=mid-1;
}
c[l]=d[i];
if(l>len) len++; }
return len;
}
int main()
{
int T;
scanf("%d",&T);
int k;
while(T--)
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
b[i]=-a[i];
}
int maxn=max(LIS(a),LIS(b)); if(n-maxn>k)
printf("A is not a magic array.\n");
else
printf("A is a magic array.\n");
}
return 0;
}

  

hdu 6197 array array array的更多相关文章

  1. hdu 6197 2017 ACM/ICPC Asia Regional Shenyang Online array array array【最长不上升子序列和最长不下降子序列】

    hdu 6197 题意:给定一个数组,问删掉k个字符后数组是否能不减或者不增,满足要求则是magic array,否则不是. 题解:队友想的思路,感觉非常棒!既然删掉k个后不增或者不减,那么就先求数组 ...

  2. LeetCode 80 Remove Duplicates from Sorted Array II [Array/auto] <c++>

    LeetCode 80 Remove Duplicates from Sorted Array II [Array/auto] <c++> 给出排序好的一维数组,如果一个元素重复出现的次数 ...

  3. js Array.from & Array.of All In One

    js Array.from & Array.of All In One 数组生成器 Array.from The Array.from() static method creates a ne ...

  4. Array.fill & array padding

    Array.fill & array padding arr.fill(value[, start[, end]]) https://developer.mozilla.org/en-US/d ...

  5. HDU 6197 array array array 2017沈阳网络赛 LIS

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6197 题意:给你n个数,问让你从中删掉k个数后(k<=n),是否能使剩下的序列为非递减或者非递增 ...

  6. HDU - 6197:array array array (简单LIS)

    One day, Kaitou Kiddo had stolen a priceless diamond ring. But detective Conan blocked Kiddo's path ...

  7. hdu 6197 array array array LIS

    正反跑一次LIS,取最大的长度,如果长度大于n-k就满足条件. ac代码: #include <cstdio> #include <cstring> #include < ...

  8. HDU - 6197 array array array (最长上升子序列&最长下降子序列)

    题意:对于一个序列,要求去掉正好K个数字,若能使其成为不上升子序列或不下降子序列,则“A is a magic array.”,否则"A is not a magic array.\n&qu ...

  9. hdu 5280 Senior's Array

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5280 Senior's Array Description One day, Xuejiejie ge ...

随机推荐

  1. 单线程的JavaScript

    Javascript是单线程的 因为JS运行在浏览器中,是单线程的,每个window一个JS线程,既然是单线程的,在某个特定的时刻只有特定的代码能够被执行,并阻塞其它的代码.而浏览器是事件驱动的(Ev ...

  2. canvas图形处理和进阶用法

    前面的话 上一篇博客介绍了canvas基础用法,本文将更进一步,介绍canvas的图形处理和进阶用法 图形变换 图形变换是指用数学方法调整所绘形状的物理属性,其实质是坐标变形.所有的变换都依赖于后台的 ...

  3. JavaScript看书笔记01

    JavaScript看书笔记... ------------------- JavaScript允许var定义语句出现在函数内部的任意位置.JS中使用Var来显示的给变量声明 JavaScript是一 ...

  4. 横排列表(li)的左右对齐

    效果如下: HTML代码如下: <div class="overdiv"> <ul> <li>1</li> <li>2& ...

  5. 用户管理-linux基础

    用户管理 useradd -u -g -G(附加组) ,-c -d -s -r(创建系统用户)   -M (不创建家目录)    思考:删除user1用户家目录,如何还原.        可以#cp ...

  6. python自学1——代码优化1

    优化了上次的代码,请求方式可接收get和post两种,代码中对两种方式做了判断. 测试结果中提取了测试用例的名称.请求返回的状态.请求的时间. #coding:utf-8 import xlrd im ...

  7. POI单元格添加公式以及读取公式结果的值

    POI提供了为单元格添加条件样式的方法,但是我并没有找到获取单元格改变后样式的方法,获取到样式依旧是没有改变之前的. 比如为单元格添加条件样式用于监听单元格值是否被修改,如果单元格值被修改那么字体颜色 ...

  8. hashMap遍历方式

    package Ch17; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java ...

  9. Tomcat会话保持之session server

    author:JevonWei 版权声明:原创作品 Tomcat会话保持之session server 拓扑图 环境 tomcatA 172.16.253.108 tomcatB 172.16.253 ...

  10. 前端开发【第3篇:JavaScript序】

    JavaScript历史 聊聊JavaScript的诞生 JavaScirpt鼻祖:Bremdan Eich(布兰登·艾奇),JavaScript的诞生于浏览器的鼻祖网景公司(Netscape),发布 ...