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


            May the force be with you!
            posts - 52,  comments - 33,  trackbacks - 0

            題目來(lái)源:《算法藝術(shù)與信息學(xué)競(jìng)賽》Page145

            題目1.5.12

            題目提交方式:uva10271

            汗,今天發(fā)現(xiàn)我的代碼在uva上不能ac,那天比賽數(shù)據(jù)弱,被我騙過(guò)去了~~

            題目描述:
               n個(gè)數(shù)中選k+8組共(k+8)×3個(gè)數(shù),每組數(shù)三個(gè),每組數(shù)中較小的兩個(gè)數(shù)Ai,Bi,其代表的值為(Ai-Bi)^2,另所有組的值的和最小。

            解題思路:
                (來(lái)自O(shè)IBH的思路)首先,我們直觀的猜測(cè):任意一副筷子中A和B一定是長(zhǎng)度相鄰的兩只筷子。證明如下:對(duì)于某副筷子(A1,B1,C1)和另一副筷子(A2,B2,C2),如果A1<=A2<=B1<=B2,那么交換一下筷子重新組合成(A1,A2,C1)和(B1,B2,C2)質(zhì)量和會(huì)更優(yōu)。對(duì)于某副筷子(A,B,C)和閑置的筷子D,如果A<=D<=B,那么交換一下重新組合成(A,D,C)質(zhì)量和也會(huì)更優(yōu)。
            這樣,我們得到了一個(gè)線性結(jié)構(gòu),只需要從左往右或從后往左遞推。在本題中,由于第3根筷子比另2根長(zhǎng),所以我們從長(zhǎng)筷子往短筷子遞推。在遞推之前,首先將N只筷子從小到大排序,Li是第i只筷子的長(zhǎng)度。
            用d[i,j]表示用i..n的單只筷子組成j副筷子的最小質(zhì)量值之和,則當(dāng)且僅當(dāng)n-i+1>=3j的時(shí)候狀態(tài)是合法的。請(qǐng)讀者自己寫(xiě)出狀態(tài)轉(zhuǎn)移方程。
                這個(gè)題目比較難,我是看了上面的思路寫(xiě)的,狀態(tài)轉(zhuǎn)移方程為:
                                 f[i][j] = MIN(        f[i-1][j],     f[i+2][j-1+ (a[i+1]-a[i]) * (a[i+1]-a[i])     )//對(duì)應(yīng)與上面思路,
            由于數(shù)據(jù)比較大,實(shí)現(xiàn)時(shí)用到滾動(dòng)數(shù)組。

            題目代碼:
             1 /*********************************************************************
             2 Author: littlekid
             3 Created Time: 2008-2-16 13:35:08
             4 Problem Source: 
             5 Description: 
             6 ********************************************************************/
             7 # include <iostream>
             8 using namespace std;
             9 
            10 # define N 5005
            11 
            12 const int maxint = 0xfffffff;
            13 
            14 int k, n;
            15 int a[ N ];
            16 int f[2][N] = { 0 };
            17 int ans;
            18 
            19 void init()
            20 {
            21     scanf("%d %d"&k, &n);
            22     for (int i = 0; i < n; i ++)
            23     {
            24         scanf("%d"&a[i]);
            25     }
            26     k+=8;
            27 }
            28 
            29 int cmp(const void *a, const void *b)
            30 {
            31     return (*(int *)a-*(int *)b);
            32 }
            33 
            34 int MIN(int a, int b)
            35 {
            36     return a > b ? b : a;
            37 }
            38 
            39 void dp()
            40 {
            41     qsort(a, n, sizeof(a[0]), cmp);
            42     //cout << a[0] << endl; ////
            43     for (int i = n; i > 0; i --) a[i] = a[i-1];//
            44 
            45     int now = 0, pre = 1;
            46 
            47     for (int j = 1; j <= k; ++j)
            48     {
            49         if (now == 1)
            50         {
            51             now = 0, pre = 1;
            52         }
            53         else
            54         {
            55             now = 1, pre = 0;
            56         }
            57         for (int i = j * 2; i <= n; ++i)
            58         {
            59             if (i > j * 2)
            60                 f[now][i] = f[now][i - 1];
            61             else
            62                 f[now][i] = maxint;
            63             if ((n - i) > (k - j) * 3)
            64                 f[now][i] = MIN(f[now][i], f[pre][i - 2+ (a[i] - a[i - 1]) * (a[i] - a[i - 1]));
            65         }
            66     }
            67     ans = f[now][n];
            68 }
            69 
            70 void output()
            71 {
            72     printf("%d\n", ans);
            73 }
            74 
            75 int main()
            76 {
            77     int T;    scanf("%d"&T);
            78     while (T --)
            79     {
            80         init();
            81         dp();
            82         output();
            83     }
            84     return 0;
            85 }
            86 
            87     
            posted on 2008-02-16 20:32 R2 閱讀(2404) 評(píng)論(3)  編輯 收藏 引用 所屬分類(lèi): Problem Solving

            FeedBack:
            # re: 【DP】“佳佳的筷子”的解法
            2010-02-19 18:49 | Lee1R
            上面的狀態(tài)轉(zhuǎn)移方程我沒(méi)有看太懂……
            d[i][j]=min(d[i-1][j],d[i+2][j-1]+(a[i+1]-a[i])^2);
            方程的含義應(yīng)該是第i根筷子要么不使用,要么就和i+1根筷子一起使用,兩根短筷子必須相鄰這我知道,但是長(zhǎng)筷子不需要考慮在狀態(tài)轉(zhuǎn)移方程中嗎?
            如果在這解答不方便,可以和我聯(lián)系。QQ120501168
              回復(fù)  更多評(píng)論
              
            # re: 【DP】“佳佳的筷子”的解法
            2010-03-06 13:10 | R2
            @Lee1R

            如上所述,本解法是錯(cuò)的。具體解法現(xiàn)在已經(jīng)無(wú)印象了
              回復(fù)  更多評(píng)論
              
            # re: 【DP】“佳佳的筷子”的解法
            2010-03-06 18:42 | Lee1R
            @R2
            這種解法是正確的!我后來(lái)想明白了,因?yàn)檫@種決策方式可以保證第三根筷子有的選!
            具體看我的解題報(bào)告:
            http://www.shnenglu.com/rakerichard/archive/2010/02/19/108081.html
              回復(fù)  更多評(píng)論
              
            你是第 free hit counter 位訪客




            <2007年10月>
            30123456
            78910111213
            14151617181920
            21222324252627
            28293031123
            45678910

            常用鏈接

            留言簿(4)

            隨筆分類(lèi)(54)

            隨筆檔案(52)

            文章檔案(1)

            ACM/ICPC

            技術(shù)綜合

            最新隨筆

            搜索

            •  

            積分與排名

            • 積分 - 63327
            • 排名 - 355

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            亚洲国产精品狼友中文久久久| 99久久这里只精品国产免费| 久久精品国产亚洲Aⅴ香蕉| 色综合久久中文字幕综合网| 亚洲精品无码久久久久去q | 久久人人爽人人爽人人片AV麻烦| 亚洲日本va中文字幕久久| 一本大道久久a久久精品综合| 污污内射久久一区二区欧美日韩| 久久综合给久久狠狠97色| 日日狠狠久久偷偷色综合96蜜桃| 九九精品99久久久香蕉| 亚洲人成无码网站久久99热国产| 国产精品福利一区二区久久| 免费无码国产欧美久久18| 久久久久国产一级毛片高清板| 精品久久8x国产免费观看| 欧美国产成人久久精品| 久久婷婷五月综合97色直播| 国产精品岛国久久久久| 午夜精品久久久久久毛片| 亚洲精品无码专区久久同性男| 一本久久a久久精品综合夜夜| 亚洲AV日韩AV永久无码久久| 久久人妻少妇嫩草AV蜜桃| 97精品国产97久久久久久免费| 亚洲中文字幕久久精品无码APP| 久久综合九色综合欧美就去吻| 一本一道久久精品综合| 久久久国产精品网站| 久久久精品人妻一区二区三区四| 久久99精品国产麻豆宅宅| 久久99热这里只频精品6| 久久免费国产精品| 久久伊人中文无码| 婷婷久久综合九色综合绿巨人 | 欧洲人妻丰满av无码久久不卡| 国产精品久久久久久久久软件| 亚洲国产天堂久久综合| 香蕉久久AⅤ一区二区三区| 午夜视频久久久久一区|