Poj 1631 Bridging signals

果的LIS,直接贴代码
#include <stdio.h>

int a[40000], b[40000], n, i, j, sum;

void LIS()
{
    
int left= 0, right= sum-1, mid;

    
if(0 == i)
    {
        b[
0]=a[i];
    }
    
else 
    {
        
while(left <= right)
        {
            mid
= (left + right)>>1;
            
if(b[mid] > a[i])
            {
                right
= mid-1;
            }
            
else
            {
                left
= mid+1;
            }
        }
        b[left]
= a[i];
        
if(left >= sum)
        {
            sum
++;
        }
    }
}

int main ()
{
    
int m, j;
    scanf(
"%d"&m);
    
for(j= 0; j < m; j++)
    {
        scanf(
"%d"&n);
        sum
= 1;
        
for(i= 0; i < n; i++)
        {
            scanf(
"%d", a+i);
            LIS();
        }
        printf(
"%d\n", sum);
    }
    
return 0;
}

posted on 2011-07-31 19:51 purplest 阅读(177) 评论(0)  编辑 收藏 引用 所属分类: String AlgorithmDP


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年7月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

常用链接

留言簿

随笔分类(70)

随笔档案(68)

ACMer

搜索

最新随笔

最新评论