树线段hdu 4508 美素数(线段树)

本文朋友在青岛吃饭的时候突然想到的...近期就有想写几篇关于树线段的博客,所以回家到之后就奋笔疾书的写出来发布了

    当前解题呈文都加上题目。

    数据量比较大,感觉暴力的话会超时,所以用线段树处理。

    逐一求出美素数,然后将美素数存入线段树中。。。。不知道该说啥了,模板级线段树。。。。。

    每日一道理
最为值得珍惜的是今天,因为最容易流逝的就是今天,把握今天就是把握希望,分分秒秒只是瞬间,而所乘载的分分秒秒就叫做一天,时间的流逝往往是在不经意之间,人生几回,青春更珍贵,对于我们这个年龄的青少年来说,青春已不足二十载,在学习的生活中我们必须靠自己的力量,驾驭着自己的小船驶向希望的彼岸。
#include<stdio.h>
#include<string.h>
#define N 1000005
int a[N];
struct node
{
	int x,y;
	int count;
}s[N*3];
void CreatTree(int t,int x,int y)
{
	s[t].count=0;
	s[t].x=x;
	s[t].y=y;
	if(s[t].x==s[t].y)
		return ;
	int temp=t*2;
	int mid=(x+y)/2;
	CreatTree(temp,x,mid);
	CreatTree(temp+1,mid+1,y);
	return ;
}
void InsertTree(int t,int x)
{
	if(s[t].x==s[t].y&&s[t].x==x)
	{
		s[t].count++;
		return ;
	}
	int temp=t*2;
	int mid=(s[t].x+s[t].y)/2;
	if(x>mid)
		InsertTree(temp+1,x);
	else
		InsertTree(temp,x);
	s[t].count=s[temp].count+s[temp+1].count;
	return ;
}
int FindTree(int t,int x,int y)
{
	if(s[t].x==x&&s[t].y==y)
		return s[t].count;
	int mid=(s[t].x+s[t].y)/2;
	int temp=t*2;
	int sum=0;
	if(x>mid)
		sum+=FindTree(temp+1,x,y);
	else if(y<=mid)
		sum+=FindTree(temp,x,y);
	else
	{
		sum+=FindTree(temp,x,mid);
		sum+=FindTree(temp+1,mid+1,y);
	}
	return sum;
}
int fun(int x)
{
	int sum;
	sum=0;
	while(x)
	{
		sum+=x%10;
		x/=10;
	}
	return sum;
}
int main()
{
	int T;
	int i,j;
	memset(a,0,sizeof(a));
	a[0]=a[1]=1;
	CreatTree(1,1,1000000);
	for(i=2;i<=1000000;i++)
	{
		if(a[i]==0)
		{
			if(a[fun(i)]==0)
				InsertTree(1,i);
			for(j=i*2;j<=1000000;j+=i)
				a[j]++;
		}
	}
	int m,n;
	int count;
	count=1;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d",&m,&n);
		printf("Case #%d: %d\n",count++,FindTree(1,m,n));
	}
	return 0;
}

    

文章结束给大家分享下程序员的一些笑话语录: 据说有一位软件工程师,一位硬件工程师和一位项目经理同坐车参加研讨会。不幸在从盘山公路下山时坏在半路上了。于是两位工程师和一位经理就如何修车的问题展开了讨论。
硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”
项目经理说:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”
软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”

--------------------------------- 原创文章 By
树和线段
---------------------------------

posted @ 2013-05-28 23:26  xinyuyuanm  阅读(186)  评论(0编辑  收藏  举报