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

            Why so serious? --[NKU]schindlerlee

            2010年02月23日星期二.sgu269 二維dp

            2010年02月23日星期二.sgu269 dp
            此題和
            220???? Little Bishops
            221???? Big Bishops?? ?
            基本是一樣的,只不過(guò)更直接一點(diǎn)

            要用高精度加法和乘法,所以我用c++寫了個(gè)大數(shù),弄了好幾次,調(diào)了半天精度,
            用滾動(dòng)數(shù)組優(yōu)化才過(guò)的。。。還是java大數(shù)快啊,
            注意要先將輸入的n個(gè)數(shù)排序,然后用遞推式

            This task is almost same as
            220???? Little Bishops
            221???? Big Bishops?? ?
            But,it is easier than those two.

            This task need Big Integer addition and multiplication,I practice writing Bignum in
            c++.I changed the static array size several times,and use rolling array to get
            Accepted.Due to the brief form of dp,I wrote in java again,that is easier and
            quicker...

            initial: dp[0][0] = 1;
            for(i = 1;i <= n;i++) {
            ??? dp[i][0] = dp[i-1][0];
            ??? for(j = 1;j <= num[i] && j <= k;j++) {
            ??????? dp[i][j] = dp[i-1][j] + dp[i-1][j-1] * (num[i] - j + 1);
            ??? }
            }

            1002871 23.02.10 10:33? schindlerlee??? 269?? .CPP??? Accepted? 868 ms? 1191 kb
            1002870 23.02.10 10:32? schindlerlee??? 269?? .JAVA?? Accepted? 127 ms? 2555 kb

            c++代碼
            ?1?
            ?2?const?int?N?=?256;
            ?3?int?n,?k,?num[N];
            ?4?struct?bignum?{
            ?5?????int?s[600],?len;
            ?6??????bignum()?{
            ?7?????????memset(s,?0,?sizeof(s));
            ?8?????????len?=?1,?s[0]?=?0;
            ?9?????}?bignum(int?a)?{
            10?????????memset(s,?0,?sizeof(s));
            11?????????len?=?0;
            12?????????while?(a?>?0)?{
            13?????????????s[len++]?=?a?%?10;
            14?????????????a?/=?10;
            15?????????}
            16?????}
            17?}
            18?//http://www.shnenglu.com/schindlerlee
            19?pool[2][N],?*prev,?*next;
            20?bignum?int2bignum(int?a)?{?return?bignum(a);?}
            21?void?pr(bignum?a)
            22?{
            23?????if?(a.len?==?0)?{
            24?????????printf("0\n");
            25?????????return;
            26?????}
            27?????for?(int?i?=?a.len?-?1;?i?>=?0;?i--)?{
            28?????????printf("%d",?a.s[i]);
            29?????}
            30?}
            31?
            32?bignum?operator?+(bignum?a,?bignum?b)
            33?{
            34?????int?len?=?max(a.len,?b.len),?i;
            35?????for?(i?=?0;?i?<?len;?i++)?{
            36?????????a.s[i]?+=?b.s[i];
            37?????}
            38?????for?(i?=?0;?i?<?len;?i++)?{
            39?????????if?(a.s[i]?>=?10)?{
            40?????????????a.s[i]?-=?10;
            41?????????????a.s[i?+?1]?+=?1;
            42?????????}
            43?????}
            44?????a.len?=?len;
            45?????while?(a.s[a.len]?>?0)?{
            46?????????a.len++;
            47?????}
            48?????return?a;
            49?}
            50?
            51?bignum?operator?*(bignum?a,?int?b)
            52?{
            53?????int?i,?shift?=?0;
            54?????for?(i?=?0;?i?<?a.len;?i++)?{
            55?????????a.s[i]?*=?b;
            56?????}
            57?????for?(i?=?0;?shift?>?0?||?i?<?a.len;?i++)?{
            58?????????a.s[i]?+=?shift,?shift?=?0;
            59?????????if?(a.s[i]?>=?10)?{
            60?????????????shift?=?a.s[i]?/?10;
            61?????????????a.s[i]?%=?10;
            62?????????}
            63?????}
            64?????a.len?=?i;
            65?????assert(a.s[a.len]?==?0);
            66?????return?a;
            67?}
            68?
            69?int?main()
            70?{
            71?????int?i,?j;
            72?????scanf("%d%d",?&n,?&k);
            73?????for?(i?=?1;?i?<=?n;?i++)?{
            74?????????scanf("%d",?num?+?i);
            75?????}
            76?????sort(num?+?1,?num?+?1?+?n);
            77?
            78?????prev?=?pool[0],?next?=?pool[1];
            79?????prev[0]?=?int2bignum(1);
            80?????for?(i?=?1;?i?<=?n;?i++,?swap(prev,?next))?{
            81?????????next[0]?=?prev[0];
            82?????????for?(j?=?1;?j?<=?num[i]?&&?j?<=?k;?j++)?{
            83?????????????next[j]?=?prev[j]?+?(prev[j?-?1]?*?(num[i]?-?j?+?1));
            84?????????}
            85?????}
            86?????pr(prev[k]);
            87?????putchar(10);
            88?????return?0;
            89?}


            java 代碼
            ?1?import?java.util.*;
            ?2?import?java.math.*;
            ?3?import?java.io.*;
            ?4?//http://www.shnenglu.com/schindlerlee
            ?5?public?class?Solution?{
            ?6?????public?static?void?main(String[]?args)?{
            ?7?????????Scanner?cin?=?new?Scanner(
            ?8?????????????????new?BufferedReader(
            ?9?????????????????new?InputStreamReader(System.in)));
            10?????????int?i,?j,?n,?k;
            11?????????BigInteger?dp[][]?=?new?BigInteger[251][251];
            12?????????int?num[]?=?new?int[256];
            13?????????n?=?cin.nextInt();
            14?????????k?=?cin.nextInt();
            15?????????for?(i?=?1;?i?<=?n;?i++)?{
            16?????????????num[i]?=?cin.nextInt();
            17?????????}
            18?????????for?(i?=?0;?i?<?251;?i++)?{
            19?????????????for?(j?=?0;?j?<?251;?j++)?{
            20?????????????????dp[i][j]?=?BigInteger.ZERO;
            21?????????????}
            22?????????}
            23?????????Arrays.sort(num,1,n+1);
            24?????????dp[0][0]?=?BigInteger.ONE;
            25?????????for?(i?=?1;?i?<=?n;?i++)?{
            26?????????????dp[i][0]?=?dp[i?-?1][0];
            27?????????????for?(j?=?1;?j?<=?k?&&?j?<=?num[i];?j++)?{
            28?????????????????dp[i][j]?=?dp[i?-?1][j].add(dp[i?-?1][j?-?1].
            29?????????????????????????multiply(BigInteger.valueOf(num[i]?-?j?+?1)));
            30?????????????}
            31?????????}
            32?????????System.out.println(dp[n][k]);
            33?????}
            34?}
            35?

            posted on 2010-02-23 15:54 schindlerlee 閱讀(1495) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 解題報(bào)告

            久久国产精品久久国产精品| 国产精品99久久精品爆乳| 久久久亚洲精品蜜桃臀| 国产午夜精品理论片久久影视| 亚洲香蕉网久久综合影视| yy6080久久| 久久天天婷婷五月俺也去| 久久天天躁狠狠躁夜夜不卡| 国产成人久久久精品二区三区| 久久综合综合久久97色| 国产精品久久精品| 青青国产成人久久91网| 久久综合中文字幕| 9191精品国产免费久久| 亚洲午夜精品久久久久久人妖| 久久精品无码一区二区三区| 成人国内精品久久久久影院| 2020久久精品国产免费| 久久综合丝袜日本网| 精品久久久久久久久久中文字幕| 中文字幕一区二区三区久久网站| 99久久亚洲综合精品网站| 国产成人精品久久亚洲| 久久久中文字幕日本| 尹人香蕉久久99天天拍| 亚洲精品高清国产一线久久| 久久久久久国产精品免费无码| 99久久精品国产免看国产一区| 久久综合狠狠综合久久激情 | 国产亚洲色婷婷久久99精品91| 性做久久久久久久久老女人| 亚洲中文字幕无码久久综合网| 久久久精品人妻一区二区三区四| 国内精品久久久久影院日本| 国内精品久久久久久久涩爱| 亚洲国产视频久久| 久久免费的精品国产V∧| 青青草原综合久久大伊人精品| 亚洲AⅤ优女AV综合久久久| 亚洲va久久久噜噜噜久久狠狠 | 丁香五月综合久久激情|