码迷,mamicode.com
首页 > 其他好文 > 详细

HDU ACM 5247 找连续数

时间:2015-06-01 16:43:58      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:c   c++   acm   算法   编程   

分析:使用STL的set容器实现,set的内部排序默认是从小到达的。先把结果预处理到一个数组中存储起来,之后直接输出即可。

#include<iostream>
#include<set>
using namespace std;

#define N 10005
int a[N];
int ans[N];
set<int> s;         //默认从小到达排序
set<int>::iterator it;

int main()      
{
	int T=0;
	int n,m,k,i,j;

	while(cin>>n>>m)
	{
		for(i=0;i<n;i++)
			cin>>a[i];
		memset(ans,0,sizeof(ans));
		for(i=0;i<n;i++)
		{
			s.clear();
			s.insert(a[i]);
			ans[1]++;
			for(j=i+1;j<n;j++)
			{
				if(s.find(a[j])==s.end())  //保证不重复
					s.insert(a[j]);
				else break;

				it=s.end();
				if(*(--it)-*s.begin()+1==s.size())
					ans[s.size()]++;
			}
		}
		cout<<"Case #"<<++T<<":"<<endl;
		while(m--)
		{
			cin>>k;
			cout<<ans[k]<<endl;
		}
	}
    return 0;      
}

HDU ACM 5247 找连续数

标签:c   c++   acm   算法   编程   

原文地址:http://blog.csdn.net/a809146548/article/details/46311979

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!