• <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年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            潛心看書研究!

            常用鏈接

            留言簿(19)

            隨筆分類(81)

            文章分類(89)

            相冊

            ACM OJ

            My friends

            搜索

            •  

            積分與排名

            • 積分 - 218020
            • 排名 - 117

            最新評論

            閱讀排行榜

            評論排行榜

            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 閱讀(1722) 評論(0)  編輯 收藏 引用 所屬分類: ACM題目
            欧美喷潮久久久XXXXx| 国内精品伊人久久久久777| 国产精品99久久99久久久| 精品九九久久国内精品| 久久久精品视频免费观看| 国产精品成人久久久| 99久久精品影院老鸭窝| 久久久久国产一区二区| 狠狠精品久久久无码中文字幕 | 久久热这里只有精品在线观看| 很黄很污的网站久久mimi色 | 久久久久亚洲AV无码专区桃色| 欧美麻豆久久久久久中文| 亚洲精品视频久久久| 久久99久久99精品免视看动漫| 日韩久久无码免费毛片软件| 久久精品国产亚洲av日韩| 久久精品国产一区二区三区不卡 | 久久久久久午夜精品| 一级a性色生活片久久无| 久久狠狠色狠狠色综合| 无码人妻久久一区二区三区蜜桃| 91精品国产91久久久久久| 亚洲国产综合久久天堂| 国内精品欧美久久精品| 91久久精一区二区三区大全| 国内精品久久久久影院薰衣草 | 国内精品久久久久影院一蜜桃| 日韩电影久久久被窝网| 日本免费一区二区久久人人澡| 久久午夜无码鲁丝片| 久久国内免费视频| 久久中文字幕无码专区| 一本久久久久久久| 国产成年无码久久久久毛片| 色欲久久久天天天综合网| 亚洲AV无码成人网站久久精品大| 亚洲∧v久久久无码精品| 国产成人无码精品久久久性色| 99久久夜色精品国产网站| 国产精品热久久无码av|