• <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>

            我希望你是我獨家記憶

            一段永遠封存的記憶,隨風(fēng)而去
            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. 小數(shù)據(jù)用簡單排序,不要用qsort,會超時
            //2. 在判斷的時候乘法比除法快
            //3. DFS的時候在遞歸結(jié)束的時候一定不要忘了return
            //4. 重復(fù)第三條

            #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国内精品久久久久影院| 国产国产成人久久精品| 狠狠色伊人久久精品综合网| 日韩电影久久久被窝网| 久久精品中文騷妇女内射| 亚洲一本综合久久| 2021最新久久久视精品爱| 亚洲中文字幕无码一久久区| 伊人久久免费视频| 国产偷久久久精品专区| 品成人欧美大片久久国产欧美...| 久久免费视频一区| 国内精品久久久久伊人av| 青青草原综合久久大伊人导航| 久久人人爽爽爽人久久久| 午夜精品久久久内射近拍高清| 久久综合国产乱子伦精品免费| 久久久久99精品成人片三人毛片 | 精品久久久中文字幕人妻| 91精品国产高清91久久久久久| 伊人精品久久久久7777| 99久久国产亚洲高清观看2024| 欧美丰满熟妇BBB久久久| 久久精品日日躁夜夜躁欧美| 国产精品欧美久久久久无广告| 久久精品国产亚洲av高清漫画| 色青青草原桃花久久综合| 久久国产V一级毛多内射| 国产一级持黄大片99久久 | 国产精品久久99| 亚洲精品无码久久久影院相关影片| 精品久久久久久久久久中文字幕| 97久久综合精品久久久综合| 久久精品水蜜桃av综合天堂| 免费无码国产欧美久久18| 99久久综合国产精品免费| 99久久99久久精品国产片果冻| 中文字幕热久久久久久久| A级毛片无码久久精品免费| 亚洲中文久久精品无码|