hdu5247 找连续数 离线排序
2015-07-24 23:55
190 查看
小度熊拿到了一个无序的数组,对于这个数组,小度熊想知道是否能找到一个k 的区间,里面的 k 个数字排完序后是连续的。
现在小度熊增加题目难度,他不想知道是否有这样的 k 的区间,而是想知道有几个这样的 k 的区间。
现在小度熊增加题目难度,他不想知道是否有这样的 k 的区间,而是想知道有几个这样的 k 的区间。
#include <iostream> #include<stdio.h> #include<string.h> #include<vector> #include<algorithm> #include<cmath> #include<map> using namespace std; const int N=1005; int T,n,m,k; int cas=1; int q ,ans ; long long a[10005]; int main() { #ifndef ONLINE_JUDGE freopen("aaa","r",stdin); #endif scanf("%d%d",&n,&m); int maxn=0; for(int i=1;i<=n;i++) scanf("%I64d",&a[i]); for(int i=1;i<=m;i++) { scanf("%d",&q[i]); if(q[i]>maxn) maxn=q[i]; } memset(ans,0,sizeof ans); int maxa,mina; for(int i=1;i<=n;i++){ maxa=a[i];mina=a[i]; map<int,int> mp; int k=0; for(int j=1;j<=maxn && i+j-1<=n;j++){ int t=i+j-1; if(mp[a[t]]==0){ //记录不重复的数字个数 k++; mp[a[t]]=1; } if(a[t]>maxa) maxa=a[t]; if(a[t]<mina) mina=a[t]; if(j==k && maxa-mina+1==j ) ans[k]++; } } printf("Case #1:\n"); for(int i=1;i<=m;i++) printf("%d\n",ans[q[i]]); return 0; }
相关文章推荐
- Bootstrap全局CSS样式之栅格系统
- 内存管理之计数器的基本操作
- shopex网店加速,解决shopex网店 CPU% 高占用问题
- 转别人的web笔记,非常值得学习
- Objective-C学习笔记(二十七)——方法的重载与重写
- Virtio概述和基本原理(KVM半虚拟化驱动)
- ok6410 LED/GPIO 控制 C#程序
- SQL 事务
- arm linux kernel 从入口到start_kernel 的代码分析
- [转]改善C#程序的建议4:C#中标准Dispose模式的实现
- Google最新截屏案例详解
- 我的c++服务器记录----非阻塞下的socket读取操作
- Unity3d中的Awake()、OnEnable()、Start()等默认函数的执行顺序和生命周期
- Unity3d中的Awake()、OnEnable()、Start()等默认函数的执行顺序和生命周期
- Babelfish
- 基于highcharts封装的一个简单易用的报表统计
- 如何在linux下写动态链接库并卖给别人?
- D - Data Center-2014-2015 ACM-ICPC, NEERC, Southern Subregional Contest
- 杭电 HDU ACM 2795 Billboard(线段树伪装版)
- Linux bridge-utils tunctl 使用