zoukankan      html  css  js  c++  java
  • poj 1836 Alignment

    一道简单dp题,自己感觉这类dp题都很简单,只要找到一种状态,从小往大了推就行了,可关键是木读懂题啊。。。。。。开始读的时候,没认真理解where each soldier can see by looking lengthwise the line at least one of the line's extremity (left or right)这句话,结果理解成从一个用n个元素的数组中抽出几个数,使数组非递减或非递增排列,呃~自然WA的很惨,然后,看了题解,发现我错了,它是让找一个先上升在下降的最长序列,于是开始做,呃~有WA,因为漏掉了一种情况,1 , 2 , 3 , 4 , 1 , 1 , 4 , 3 , 2 , 1 ,这种情况下是应该把中间那两个1去掉才是最长序列,所以又改,终于看见AC了,啊,激动啊~

    代码:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    #define maxm 1003
    #define exp 1e-6
    using namespace std ;
    
    int dpl[maxm] , dpr[maxm] ;
    double h[maxm] ;
    
    int max ( int x , int y )
    {
        return x > y ? x : y ;
    }
    
    int main()
    {
        int i , j , n ;
    
        while ( scanf ( "%d" , &n ) != EOF )
        {
            for ( i = 1 ; i <= n ; i++ )
            {
                scanf ( "%lf" , &h[i] );
                dpl[i] = 1 ;
                dpr[i] = 1 ;
            }
            int maxx = -1 ;
            for ( i = 1 ; i <= n ; i++ )
            {
                for ( j = i - 1; j > 0 ; j-- )
                {
                    if ( ( h[i] - h[j] ) >= exp )
                    dpl[i] = max ( dpl[i] , dpl[j] + 1 );
                }
            }
            for ( i = n - 1 ; i > 0 ; i-- )
            {
                for ( j = n ; j > i ; j-- )
                if ( ( h[i] - h[j] ) >= exp )
                dpr[i] = max ( dpr[i] , dpr[j] + 1 );
            }
            for ( i = 1 ; i < n ; i++ )
            for ( j = i + 1 ; j <= n ; j++ )
            if ( dpl[i] + dpr[j] > maxx )
            maxx = dpl[i] +dpr[j] ;
            for ( i = 1 ; i <= n ; i++ )
            if ( dpl[i] + dpr[i] -1 > maxx )
            maxx = dpl[i] + dpr[j] - 1;
            printf ( "%d\n" , n - maxx );
        }
        return 0;
    }
  • 相关阅读:
    tool button 工具按钮
    push button 交替输出
    信号和槽
    qt新建一个工程
    lambda表达式
    横向滚动插件
    jquery循环延迟加载,用于在图片加载完成后再加载js
    dedecms的特性-----不完整
    让边框和文本一样高,不受line-height影响,可以使用padding,padding可以用于行内元素
    行内元素的行高对布局也有影响
  • 原文地址:https://www.cnblogs.com/misty1/p/2543843.html
Copyright © 2011-2022 走看看