题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5247

找连续数

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 1207    Accepted Submission(s): 435

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
 
Source
 

题目大意:有多少个长度与为k的区间数连续的。

解题思路:依照长度一段一段截取出来,在推断是否连续,这种数据规模超时了==

首先解决是否连续的问题:我採用这个区间的最大值-最小值和长度进行比較。假设相等就是连续的~~可是这样依然超时!

超时的原因是:没询问一次两个for循环。所以要解决问题,相当于打表。

採用一个vis来标记这个数是否出现过,假设出现过就不用再找下去了,出现两个同样数字怎么可能连续下去呢,这里非常easy理解。

再用一个ans的数组来记录长度为1~k的分别有多少个~~这样就能够AC了。

详见代码。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring> using namespace std; void isSubstr(int st,int len,int c[],int a[])
{
int k=1;
for (int i=st; i<=st+len-1; i++)
{
c[k++]=a[i];
}
} int main()
{
int n,m,k;
int a[10010],ans[10010];
int vis[100010];
while (~scanf("%d%d",&n,&m))
{
for (int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
}
printf ("Case #1:\n");
memset(ans,0,sizeof(ans));
for (int i=1; i<=n; i++)
{
memset(vis,0,sizeof(vis));
int Max=0,Min=9999999;
for (int j=i; j<=n; j++)
{
Max=Max<a[j]? a[j]:Max;
Min=Min>a[j]?a[j]:Min;
int l=Max-Min+1;
if (!vis[a[j]])
{
if (j-i+1==l)
ans[l]++;
vis[a[j]]=1;
}
else
break;
}
}
while (m--)
{
scanf("%d",&k);
cout<<ans[k]<<endl;
}
}
return 0;
}

最新文章

  1. 6个奇葩的(hello,world)C语言版(转)
  2. nginx 支持laravel 5.3配置
  3. 谈谈我眼中的CSDN吧
  4. [GO编程] GO入门语法基础
  5. Java基础--常用正则匹配符号(必背,必须背,死都要背)
  6. 怎么通过URL访问到服务器上的物理文件
  7. iOS:WebKit内核框架的应用与解析
  8. Ruby On Rails 在线学习好网站
  9. 真正的轻量级WebService框架——使用JAX-WS(JWS)发布WebService
  10. HDOJ/HDU 2163 Palindromes(判断回文串~)
  11. GWT用frame调用JSP
  12. LaTeX 中插入数学公式
  13. MyEclipse开发的java web项目在 Eclipse中无法识别
  14. centos/redhat/ubuntu不同之处
  15. sql 书写 规范 优化
  16. easyui获取选中行上一行的数据
  17. 文档大师 在Win10 IE11下,文档集画面无法正常显示Word等Office文档的解决方法
  18. Android逆向——smali复杂类解析
  19. Springboot IDEA eclipse 打包
  20. 一款不错的网站压力测试工具webbench

热门文章

  1. SDOI 2017 Round1 解题报告
  2. 51nod1380 夹克老爷的逢三抽一
  3. Week Five
  4. 精通android体系架构、mvc、常见的设计模式、控制反转(ioc)
  5. HTTP状态码,400,404,500,503
  6. Codeforces Beta Round #10 D. LCIS 动态规划
  7. 2015 UESTC 数据结构专题N题 秋实大哥搞算数 表达式求值/栈
  8. JQ 数组动态添值,对象动态添值,判断数组/对象是否为空
  9. Ehcache缓存时间设置
  10. python中获取当前位置所在的行号和函数名(转)