• <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>
            隨筆 - 87  文章 - 279  trackbacks - 0
            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            潛心看書研究!

            常用鏈接

            留言簿(19)

            隨筆分類(81)

            文章分類(89)

            相冊

            ACM OJ

            My friends

            搜索

            •  

            積分與排名

            • 積分 - 219048
            • 排名 - 118

            最新評論

            閱讀排行榜

            評論排行榜

            Apple Tree
            Time Limit:1000MS? Memory Limit:65536K
            Total Submit:541 Accepted:148

            Description
            Wshxzt is a lovely girl. She likes apple very much. One day HX takes her to an apple tree. There are N nodes in the tree. Each node has an amount of apples. Wshxzt starts her happy trip at one node. She can eat up all the apples in the nodes she reaches. HX is a kind guy. He knows that eating too many can make the lovely girl become fat. So he doesn’t allow Wshxzt to go more than K steps in the tree. It costs one step when she goes from one node to another adjacent node. Wshxzt likes apple very much. So she wants to eat as many as she can. Can you tell how many apples she can eat in at most K steps.

            Input
            There are several test cases in the input
            Each test case contains three parts.
            The first part is two numbers N K, whose meanings we have talked about just now. We denote the nodes by 1 2 ... N. Since it is a tree, each node can reach any other in only one route. (1<=N<=100, 0<=K<=200)
            The second part contains N integers (All integers are nonnegative and not bigger than 1000). The ith number is the amount of apples in Node i.
            The third part contains N-1 line. There are two numbers A,B in each line, meaning that Node A and Node B are adjacent.
            Input will be ended by the end of file.

            Note: Wshxzt starts at Node 1.

            Output
            For each test case, output the maximal numbers of apples Wshxzt can eat at a line.

            Sample Input

            2 1 
            0 11
            1 2
            3 2
            0 1 2
            1 2
            1 3
            

            Sample Output

            11
            2
            

            Source
            POJ Contest,Author:magicpig@ZSU


            #include? < iostream >
            using?namespace?std;

            const ? int ?N? = ? 210 ;

            int ?adj[N][N];
            int ?n,?k;
            int ?w[N];
            int ?go[N][N],?bk[N][N];

            void ?solve();
            void ?dfs( int ,? int );
            void ?dp( int ,? int );
            inline?
            int ?max( int ?a,? int ?b)? {
            ????
            return ?a? > ?b? ? ?a?:?b;
            }


            int ?main()
            {
            ????
            while ?(scanf( " %d%d " ,? & n,? & k)? != ?EOF)? {
            ????????solve();
            ????}

            ????
            return ? 0 ;
            }


            void ?solve()? {
            ????
            int ?i,?j,?l;
            ????
            int ?x,?y;

            ????
            for ?(i = 1 ;?i <= n;?i ++ )? {
            ????????scanf(
            " %d " ,? & w[i]);
            ????????adj[i][
            0 ]? = ? 0 ;
            ????}


            ????
            for ?(i = 0 ;?i < n - 1 ;?i ++ )? {
            ????????scanf(
            " %d%d " ,? & x,? & y);
            ????????adj[x][
            ++ adj[x][ 0 ]]? = ?y;
            ????????adj[y][
            ++ adj[y][ 0 ]]? = ?x;
            ????}

            ????
            ????memset(go,?
            0 ,?sizeof(go));
            ????memset(bk,?
            0 ,?sizeof(bk));

            ????dfs(
            1 ,? 0 );

            ????
            int ?ans? = ?max(go[ 1 ][k],?bk[ 1 ][k]);
            ????printf(
            " %d\n " ,?ans? + ?w[ 1 ]);
            }


            void ?dfs( int ?p,? int ?pp)? {
            ????
            int ?i,?j,?l;
            ????
            int ?ts;????

            ????
            for ?(i = 1 ;?i <= adj[p][ 0 ];?i ++ )? {
            ????????ts?
            = ?adj[p][i];
            ????????
            if ?(ts? == ?pp)? continue ;
            ????????dfs(ts,?p);
            ????????bk[ts][
            0 ]? = ? 0 ;
            ????????bk[ts][
            1 ]? = ? 0 ;
            ????????go[ts][
            0 ]? = ? 0 ;
            ????????
            for ?(l = k;?l >= 2 ;?l -- )?bk[ts][l]? = ?bk[ts][l - 2 ]? + ?w[ts];
            ????????
            for ?(l = k;?l >= 1 ;?l -- )?go[ts][l]? = ?go[ts][l - 1 ]? + ?w[ts];
            ????????dp(p,?ts);
            ????}

            }


            void ?dp( int ?x,? int ?y)? {
            ????
            int ?i,?j,?l;
            ????
            int ?t1[N],?t2[N];
            ????memset(t1,?
            0 ,?sizeof(t1));
            ????memset(t2,?
            0 ,?sizeof(t2));
            ????
            for ?(i = 0 ;?i <= k;?i ++ )? {
            ????????
            for ?(j = 0 ;?j <= i;?j ++ )? {
            ????????????t1[i]?
            = ?max(t1[i],?max(bk[x][j] + go[y][i - j],?bk[y][j] + go[x][i - j]));
            ????????}

            ????}

            ????
            for ?(i = 0 ;?i <= k;?i ++ )? {
            ????????
            for ?(j = 0 ;?j <= i;?j ++ )? {
            ????????????t2[i]?
            = ?max(t2[i],?bk[x][j] + bk[y][i - j]);
            ????????}

            ????}

            ????
            for (i = 0 ;?i <= k;?i ++ )? {
            ????????bk[x][i]?
            = ?t2[i];
            ????????go[x][i]?
            = ?t1[i];
            ????}

            }

            posted on 2007-02-10 18:55 閱讀(1727) 評論(0)  編輯 收藏 引用 所屬分類: ACM題目
            久久精品国产亚洲av高清漫画| 99国产欧美久久久精品蜜芽| 亚洲人AV永久一区二区三区久久| 久久强奷乱码老熟女网站| 久久精品国产99久久无毒不卡| AAA级久久久精品无码区| 色婷婷综合久久久中文字幕| 久久99亚洲综合精品首页| 久久国产精品成人影院| 麻豆久久| 久久高潮一级毛片免费| 国产亚洲精品自在久久| 伊人久久无码中文字幕| 日本亚洲色大成网站WWW久久 | 无码精品久久久久久人妻中字| 国产亚洲精久久久久久无码AV| 精品无码久久久久国产| 波多野结衣AV无码久久一区| 久久久亚洲精品蜜桃臀| 青青青伊人色综合久久| 国产精品久久国产精品99盘| 日韩人妻无码精品久久久不卡 | 久久精品国产亚洲av麻豆色欲| 久久这里只精品99re66| 久久婷婷色综合一区二区| 国产毛片久久久久久国产毛片 | 久久久精品久久久久久| 色偷偷888欧美精品久久久| 狠狠色丁香久久综合婷婷| AV无码久久久久不卡蜜桃 | 伊人久久五月天| 伊人色综合久久天天人守人婷 | 色综合久久久久网| 久久青青草原国产精品免费| 久久99中文字幕久久| 国产99精品久久| 草草久久久无码国产专区| 国产精品免费久久久久久久久 | 久久精品国产第一区二区三区| 精品久久久久久久无码| 亚洲成人精品久久|