• <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?? ?
            基本是一樣的,只不過更直接一點(diǎn)

            要用高精度加法和乘法,所以我用c++寫了個(gè)大數(shù),弄了好幾次,調(diào)了半天精度,
            用滾動(dòng)數(shù)組優(yōu)化才過的。。。還是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://m.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://m.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 閱讀(1501) 評論(0)  編輯 收藏 引用 所屬分類: 解題報(bào)告

            久久久久国产视频电影| 亚洲狠狠婷婷综合久久久久| 久久精品中文字幕有码| 97精品伊人久久大香线蕉| 久久不见久久见免费视频7| 久久久久国产精品三级网| 亚洲精品高清国产一线久久| 欧美亚洲国产精品久久蜜芽| 欧美精品丝袜久久久中文字幕| 人妻少妇久久中文字幕| 久久精品国产只有精品66| 无码国内精品久久人妻蜜桃 | 久久久噜噜噜久久中文字幕色伊伊| 亚洲精品午夜国产VA久久成人| 国产精品美女久久久久AV福利| 久久精品中文騷妇女内射| 一日本道伊人久久综合影| 国产成人香蕉久久久久| 国产精品一久久香蕉国产线看观看| 亚洲国产综合久久天堂 | 精品国产青草久久久久福利| 久久综合狠狠综合久久激情 | 无码国产69精品久久久久网站| 亚洲国产成人精品91久久久 | 性欧美大战久久久久久久| 99久久www免费人成精品| 精品久久人妻av中文字幕| 久久精品aⅴ无码中文字字幕不卡| 久久人人爽人人爽人人片AV东京热| 国产精品99久久久久久人| 亚洲国产另类久久久精品小说| 亚洲精品无码专区久久同性男| 国内精品久久久久久久久电影网| 成人国内精品久久久久一区| 久久久国产精品亚洲一区| 欧美黑人又粗又大久久久| 日韩精品久久无码中文字幕| 18岁日韩内射颜射午夜久久成人 | 国产激情久久久久影院老熟女| 99久久久国产精品免费无卡顿 | 久久精品国产亚洲Aⅴ香蕉|