hdu 1025 Constructing Roads In JGShining's Kingdom

来源:互联网 发布:淘宝李白凤求凰可信吗 编辑:程序博客网 时间:2024/04/29 16:47

链接:点击打开链接

经典DP,最长递增子序列(要用NLogN的方法过)

#include"stdio.h"int num[500011];int ans[500011];int main(){    int n,k=1;    int len,low,up,mid;    int i;    int temp1,temp2;    while(scanf("%d",&n)!=-1)    {        for(i=0;i<n;i++)        {            scanf("%d%d",&temp1,&temp2);            num[temp1]=temp2;        }        ans[1]=num[1];        len=1;        for(i=2;i<=n;i++)        {            /*****/                   //这个二分是别人写的,表示比我写的好多了- -I。            low=1;            up=len;            while(low<=up)            {                mid=(low+up)/2;                if(ans[mid]<num[i]) low=mid+1;                else up=mid-1;            }            ans[low]=num[i];            if(low>len) len++;            /*****/        }        printf("Case %d:\n",k);        if(len==1)    printf("My king, at most 1 road can be built.");        else    printf("My king, at most %d roads can be built.",len);        printf("\n");        printf("\n");        k++;    }    return 0;}


原创粉丝点击