• <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 閱讀(186) 評論(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无码专区首JN | 久久久久99精品成人片牛牛影视| 久久久久综合中文字幕| 99久久精品国产一区二区| 欧美亚洲国产精品久久蜜芽 | 久久国产AVJUST麻豆| 国产精品一久久香蕉国产线看观看| 久久久久女教师免费一区| 亚洲精品无码久久久久去q| 国内精品久久久久久久影视麻豆 | 久久精品国产91久久综合麻豆自制| 久久男人中文字幕资源站| 久久久久久久尹人综合网亚洲 | 久久午夜无码鲁丝片午夜精品| 色偷偷偷久久伊人大杳蕉| 久久伊人中文无码| 国产精品一区二区久久精品| 伊人久久综合成人网| 久久久久亚洲AV无码观看| 久久一本综合| 久久精品一区二区影院| 青青青青久久精品国产 | 久久午夜伦鲁片免费无码| 一本一道久久a久久精品综合| 国产精品日韩深夜福利久久| 国产成人精品久久一区二区三区| 男女久久久国产一区二区三区| 久久久久久久免费视频| 久久99热这里只频精品6| 久久久99精品成人片中文字幕| 精品国产婷婷久久久| 中文精品久久久久国产网址| 2021国产成人精品久久| 欧美亚洲另类久久综合| 国产精品免费久久| 久久免费视频一区| 国产亚洲精品久久久久秋霞| 久久天天躁狠狠躁夜夜2020一|