• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            我希望你是我獨家記憶

            一段永遠封存的記憶,隨風而去
            posts - 263, comments - 31, trackbacks - 0, articles - 3
               :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

            USACO——424——DFS

            Posted on 2008-08-07 19:36 Hero 閱讀(181) 評論(0)  編輯 收藏 引用 所屬分類: 代碼如詩--ACM
            /*
            ID: wangzha4
            LANG: C++
            TASK: cowcycle
            */

            /*
               Test 1: TEST OK [0.011 secs, 2724 KB]
               Test 2: TEST OK [0.151 secs, 2720 KB]
               Test 3: TEST OK [0.205 secs, 2720 KB]
               Test 4: TEST OK [0.421 secs, 2720 KB]
               Test 5: TEST OK [0.713 secs, 2720 KB]
               Test 6: TEST OK [0.799 secs, 2720 KB]
               Test 7: TEST OK [1.544 secs, 2724 KB]
               Test 8: TEST OK [1.361 secs, 2720 KB]
            */

            //1. 小數據用簡單排序,不要用qsort,會超時
            //2. 在判斷的時候乘法比除法快
            //3. DFS的時候在遞歸結束的時候一定不要忘了return
            //4. 重復第三條

            #include 
            <stdio.h>
            #include 
            <stdlib.h>
            #include 
            <string.h>
            #include 
            <ctype.h>
            #define llong unsigned long long 
            #define unint unsigned int
            #define printline  printf( "\n" ) 

            const int INF = 1000000 ;
            const int size = 155 ;

            int inf, inb ;
            int fsn, fen, bsn, ben ;
            int front[size], back[size] ;
            double rate[160] ; int ct_rate ;
            double data[160] ; 

            double best ;
            int bfront[size], bback[size] ;

            int cmp( const void *a, const void *b )
            {
                
            if*(double *)a - *(double *)b > 0 )    return 1 ;
                
            else    return -1 ;
            }

            void DFS_back( int dep, int tdep, int sn )
            {
                
            if( sn > ben )    return ;
                
                back[dep] 
            = sn ;
                
                
            if( dep == inb ) {
                    
            //if( front[inf]*1.0/back[1] - front[1]*1.0/back[inb] * 3.0 < 0 )    return ;
                    if( front[inf] * back[inb] < back[1* front[1* 3 )    return ;
                    
                    ct_rate 
            = 0 ;
                    
            forint i=1; i<=inf; i++ ) {
                        
            forint j=1; j<=inb; j++ ) {
                            rate[ct_rate
            ++= front[i]*1.0 / back[j] ;
                        }
                    }
                    
            //qsort( rate, ct_rate, sizeof(rate[0]), cmp ) ;
                    
                    
            double temp ; 
                    
            forint i=ct_rate-1; i>0; i-- ) {
                        
            forint j=0; j<i; j++ ) {
                            
            if( rate[j+1< rate[j] ) {
                                temp 
            = rate[j] ; rate[j] = rate[j+1]; rate[j+1= temp ;
                            }
                        }
                    }
                    
                    
            double fangcha = 0.0 ; double average = 0.0 ; double sum = 0.0 ;
                    
            forint i=1; i<ct_rate; i++ ) {
                        data[i] 
            = rate[i] - rate[i-1] ;    sum += data[i] ;
                    }
                    average 
            = sum / (ct_rate-1) ;
                    
            forint i=1; i<ct_rate; i++ ) {
                        fangcha 
            += (average-data[i]) * (average-data[i]) ;
                    }
                    
                    fangcha 
            = fangcha / (ct_rate-1) ;
                    
                    
            if( fangcha < best ) {
                        
            forint i=1; i<=inf; i++ )    bfront[i] = front[i] ;
                        
            forint i=1; i<=inb; i++ )    bback[i]  = back[i] ;
                        best 
            = fangcha ;
                    }

                    
            return ;
                }
                
                
            int maxi = ben - inb + dep + 1 ;
                
            forint i=1; i+sn<=maxi; i++ ) {
                    DFS_back( dep
            +1, tdep, sn+i ) ;
                }
            }

            void DFS_front( int dep, int tdep, int sn )
            {
                
            if( sn > fen )    return ;
                
                front[dep] 
            = sn ;
                
                
            if( dep == inf ) {
                    
            forint j=bsn; j<=ben-inb+1; j++ ) {
                        DFS_back( 
            1, inb, j ) ;
                    }

                    
            return ;
                }
                
                
            int maxi = fen - inf + dep + 1 ;
                
            forint i=1; i+sn<=maxi; i++ ) {
                    DFS_front( dep
            +1, tdep, sn+i ) ;
                }
            }

            int main()
            {
                freopen( 
            "cowcycle.in""r", stdin ) ;
                freopen( 
            "cowcycle.out","w",stdout ) ;

                scanf( 
            "%d %d"&inf, &inb ) ;
                scanf( 
            "%d %d %d %d"&fsn, &fen, &bsn,&ben ) ;
                
                best 
            = (double)INF ;
                
            forint i=fsn; i<=fen-inf+1; i++ )
                    DFS_front( 
            1, inf, i ) ;
                
                
            forint i=1; i<inf; i++ )    printf( "%d ", bfront[i] ) ; printf( "%d\n", bfront[inf] ) ;
                
            forint i=1; i<inb; i++ )    printf( "%d ", bback[i] ) ; printf( "%d\n", bback[inb] ) ;
                
                
            return 0 ;
            }
            色综合合久久天天给综看| 亚洲av日韩精品久久久久久a| 97久久精品国产精品青草| 久久超乳爆乳中文字幕| 国产高清美女一级a毛片久久w| 久久av免费天堂小草播放| 久久成人国产精品免费软件| 久久久老熟女一区二区三区| 99热精品久久只有精品| 国产色综合久久无码有码| 91精品国产高清久久久久久国产嫩草 | 久久99精品久久久久久齐齐| 午夜精品久久久久成人| 久久精品人人做人人爽97| 久久国产视屏| 国产精品久久久久久久久免费| 四虎国产精品成人免费久久| 91精品国产高清久久久久久io| 久久综合一区二区无码| 久久精品国产99国产精品澳门| 欧美亚洲国产精品久久高清| 久久精品国产精品青草app| 无码人妻久久一区二区三区蜜桃| 久久综合狠狠综合久久激情 | 精品国产乱码久久久久久郑州公司| 成人精品一区二区久久久| 国内精品久久人妻互换| 国内精品久久久久影院亚洲| 久久久久亚洲AV成人网| 色综合久久中文综合网| 99国产欧美精品久久久蜜芽| 久久精品国产AV一区二区三区| 伊人色综合九久久天天蜜桃| 久久久久久国产精品无码下载 | 一本色道久久88精品综合| 怡红院日本一道日本久久| 久久狠狠高潮亚洲精品| 久久久久亚洲av无码专区| 欧洲人妻丰满av无码久久不卡| 亚洲中文字幕久久精品无码APP | 久久久久亚洲AV成人网人人网站|