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

            要用高精度加法和乘法,所以我用c++寫了個大數,弄了好幾次,調了半天精度,
            用滾動數組優化才過的。。。還是java大數快啊,
            注意要先將輸入的n個數排序,然后用遞推式

            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 閱讀(1503) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告

            国产午夜福利精品久久2021| 国产成人AV综合久久| 久久亚洲中文字幕精品一区| 久久天天躁狠狠躁夜夜avapp| 中文字幕久久波多野结衣av| 日本久久久久亚洲中字幕| 久久99精品久久久久久| 久久久久久av无码免费看大片| 欧美精品乱码99久久蜜桃| 99久久精品日本一区二区免费| 欧美粉嫩小泬久久久久久久| 久久婷婷五月综合色高清| 欧美精品福利视频一区二区三区久久久精品 | 久久久久无码精品国产app| 久久精品卫校国产小美女| 成人精品一区二区久久| 新狼窝色AV性久久久久久| 性做久久久久久久久老女人| 精品久久久久久亚洲| 久久久婷婷五月亚洲97号色| 一本久久综合亚洲鲁鲁五月天| 久久九九亚洲精品| 老色鬼久久亚洲AV综合| 久久人妻无码中文字幕| 性欧美大战久久久久久久| 精品欧美一区二区三区久久久| 久久电影网一区| 久久久老熟女一区二区三区| 精品国产青草久久久久福利| 久久久国产精品| 久久久久国产一区二区| 精品久久久久久无码中文字幕 | 精品久久人人爽天天玩人人妻| 人妻少妇精品久久| 亚洲欧洲精品成人久久奇米网| 亚洲综合婷婷久久| 久久国产香蕉一区精品| 久久国产精品免费| 日本久久中文字幕| 精品综合久久久久久97| 人妻无码αv中文字幕久久琪琪布|