Problem Description

小度熊拿到了一个无序的数组,对于这个数组,小度熊想知道是否能找到一个k 的区间,里面的 k 个数字排完序后是连续的。

现在小度熊增加题目难度,他不想知道是否有这样的 k 的区间,而是想知道有几个这样的 k 的区间。

Input

输入包含一组测试数据。

第一行包含两个整数n,m,n代表数组中有多少个数字,m 代表针对于此数组的询问次数,n不会超过10的4次方,m 不会超过1000。第二行包含n个正整数,第 I 个数字代表无序数组的第 I 位上的数字,数字大小不会超过2的31次方。接下来 m 行,每行一个正整数 k,含义详见题目描述,k 的大小不会超过1000。

Output

第一行输"Case #i:"。(由于只有一组样例,只输出”Case #1:”即可)

然后对于每个询问的 k,输出一行包含一个整数,代表数组中满足条件的 k 的大小的区间的数量。

Sample Input

6 2
3 2 1 4 3 5
3
4

Sample Output

Case #1:
2
2

思路:只有一组输入,但有 m 个询问,不难想出打表记录所有情况,关键在于 k 个数字排序后是连续的。

k 个数字排序后连续就意味着该区间的最大值减最小值等于区间长度-1,即:maxx-minn=j-i,因此如果一个区间满足上述情况,那么这个长度的数组值 +1 即可,此外,由于 k<=1000,因此要注意 j-i<=1000

Source Program

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#define PI acos(-1.0)
#define E 1e-6
#define MOD 16007
#define INF 0x3f3f3f3f
#define N 1000001
#define LL long long
using namespace std;
int n,m;
int a[N];
int res[N];
set<int> s;
void solve(){for(int i=0;i<n;i++){int minn=a[i],maxx=a[i];s.clear();for(int j=i;j<n&&j-i<=1000;j++){minn=min(minn,a[j]);maxx=max(maxx,a[j]);s.insert(a[j]);//统计当前个数if(maxx-minn==j-i)if(s.size()==maxx-minn+1)res[s.size()]++;}}
}
int main(){scanf("%d%d",&n,&m);for(int i=0;i<n;i++)scanf("%d",&a[i]);solve();printf("Case #1:\n");while(m--){int k;scanf("%d",&k);printf("%d\n",res[k]);}return 0;
}

找连续数(HDU-5247)相关推荐

  1. hdu 5247 找连续数(思维)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5247 找连续数 Time Limit: 2000/1000 MS (Java/Others)    M ...

  2. 2015年百度之星初赛(1) --- B 找连续数

    找连续数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  3. hdu5247找连续数(打表)

    题意(中问题直接粘题意吧)                                 找连续数 Problem Description 小度熊拿到了一个无序的数组,对于这个数组,小度熊想知道是否 ...

  4. hdu5247 找连续数

    Problem Description 小度熊拿到了一个无序的数组,对于这个数组,小度熊想知道是否能找到一个k 的区间,里面的 k 个数字排完序后是连续的. 现在小度熊增加题目难度,他不想知道是否有这 ...

  5. 数组系列—连续数中寻找缺失的数字

    连续数中寻找缺失的数字 通过散列表实现: public static void find(int[] array){Hashtable<Integer,Integer> hasht=new ...

  6. 2019.7.8 校内测试题 连续数和

    题目 连续数和 (num.cpp,1s,128MB) [问题描述]: 一个正整数有可能可以被表示为 n(10^9>=n>=2)个连续正整数之和,如: 15=1+2+3+4+5 15=4+5 ...

  7. 统计数列中是连续数的个数

    数据库环境:SQL SERVER2008R2 今天在群里看到一位网友提的需求,要求统计一组数据中前3位是连续数的个数,具体看贴图. 实现这个需求蛮简单的,说下我的思路: 取前3位,然后减去123,再和 ...

  8. 4万次下载,我的这本电子书连续数月蝉联阿里云下载榜冠军!!!

    初学Java的你还在烦恼不知道怎么去学,学习什么内容吗? 那么多的技术书籍是否已经让你无从下手? 别急,这就附上一份完整的Java学习路径.从头开始,给你一个体系化的学习方案. 结合作者(其实就是我) ...

  9. 7-160 找完数 (20 分)

    7-160 找完数 (20 分) 所谓完数就是该数恰好等于除自身外的因子之和.例如:6=1+2+3,其中1.2.3为6的因子.本题要求编写程序,找出任意两正整数m和n之间的所有完数. 输入格式: 输入 ...

最新文章

  1. Linux Kernel TCP/IP Stack — L1 Layer — NIC Controller
  2. 嵌入式编程之模块化编程
  3. VS2017 安装,建议大家都看一下这个在卸载,真人真事,防止扑街
  4. ITK:将网格写入vtp文件
  5. linux中高并发socket最大连接数的优化详解
  6. 增压的jstack:如何以100mph的速度调试服务器
  7. linux过滤文件的关键字,linux tail 过滤日志文件中的关键字
  8. php 命名空间不能继承,PHP两个类使用同一个命名空间,无法相互调用
  9. 升级到android studio 4.1后检测不到flutter、Dart插件
  10. 运维记之源码编译nfs-utils和rpcbind
  11. 小程序获取oppenid
  12. linux skyeye,用skyeye运行uClinux内核
  13. 基于PG与PostGIS搭建实时矢量瓦片服务
  14. java防报毒_java接口如何有效防止恶意请求
  15. 通过ethtool命令解决网络的卡顿、时延、断断续续、路由带*****识别错误
  16. 爱在深秋-稻城亚丁旅游途中的风花雪月
  17. easeOutBack的贝塞尔曲线参数
  18. 市净率|介绍|解释|计算方法
  19. Linux搭建下载机(Deluge/BT)
  20. 计算机算最大值如何操作,如何合理设置计算机的虚拟内存值(初始大小及最大值)?...

热门文章

  1. 什么是HBase?它是怎样工作的?终于有人讲明白了
  2. java 内核驱动程序_内核第三讲,进入ring0,以及编写第一个内核驱动程序.
  3. 如果恶魔给你一亿,一年之后必须还两个亿,你会接受吗?
  4. 再有人问你什么是ThreadLocal,就把这篇文章甩给他!
  5. 轻拢慢捻,微服务熔断大总管
  6. Jeecg 初级入门
  7. ehcache缓存的详细配置
  8. Java基础篇(03):流程控制语句,和算法应用
  9. 200多个新颖独特的域名展示
  10. 网速变得奇慢说明可能需要安装金山ARP防火墙了