算法代码hdu 1025(最大上升子序列的n*logn解法)

近期朋友几篇文章介绍了改算法代码的文章. 关联文章的地址

    之前遇到过这个算法,但是事先没有特别注意。

    算法理解了七八分,但是还不敷彻底,先把代码发出来,明天修改一下,附上完全的算法思路。

    每日一道理
无知者为梦想中的虚幻而苦苦等待,换回的不是所求的,而是岁月在脸上留下的印痕,一事无成的人一生便是虚度。生活中,与其花时间去等待,不如加快步伐去追寻理想,试着与时间赛跑,也许身躯、心理会感到劳累,但这样的生活毕竟是充实的。
#include<stdio.h>
#define N 500005
int a[N],ans[N];
int main()
{
	int n;
	int x,y;
	int i;
	int count;
	count=1;
	while(scanf("%d",&n)!=EOF)
	{
		for(i=0;i<n;i++)
		{
			scanf("%d%d",&x,&y);
			a[x]=y;
		}
		ans[1]=a[1];
		int ln;
		ln=1;
		for(i=2;i<=n;i++)
		{
			int low,up;
			low=1;
			up=ln;
			while(low<=up)
			{
				int mid;
				mid=(low+up)/2;
				if(ans[mid]<a[i])
					low=mid+1;
				else
					up=mid-1;
			}
			ans[low]=a[i];
			if(low>ln)
				ln++;
		}
		printf("Case %d:\n",count++);
		if(ln==1)
			printf("My king, at most 1 road can be built.\n");
		else
			printf("My king, at most %d roads can be built.\n",ln);
		printf("\n");
	}
	return 0;
}

文章结束给大家分享下程序员的一些笑话语录: 自行车
一个程序员骑着一个很漂亮的自行车到了公司,另一个程序员看到了他,问 到,“你是从哪搞到的这么漂亮的车的?”
骑车的那个程序员说, “我刚从那边过来, 有一个漂亮的姑娘骑着这个车过来, 并停在我跟前,把衣服全脱了,然后对我说,‘你想要什么都可以’”。
另一个程序员马上说到, “你绝对做了一个正确的选择, 因为那姑娘的衣服你 并不一定穿得了”。

posted @ 2013-05-19 21:15  xinyuyuanm  阅读(232)  评论(0编辑  收藏  举报