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

            久久久无码精品亚洲日韩京东传媒| 欧洲精品久久久av无码电影| 久久综合九色综合精品| 国产高潮久久免费观看| 香蕉99久久国产综合精品宅男自| 777午夜精品久久av蜜臀| 久久久精品免费国产四虎| 亚洲欧美精品一区久久中文字幕| 久久青青草原亚洲av无码app| 51久久夜色精品国产| 无码国内精品久久综合88| 1000部精品久久久久久久久| 久久婷婷五月综合成人D啪| 久久久噜噜噜久久中文福利| 精品无码久久久久久国产| 久久综合亚洲色HEZYO社区| 国产叼嘿久久精品久久| 久久亚洲精品人成综合网| 无码乱码观看精品久久| 国产精品久久久福利| 东方aⅴ免费观看久久av| 久久99精品久久久久久不卡| 国产精品对白刺激久久久| 青青热久久国产久精品| 亚洲国产精品久久久久| 国产精品禁18久久久夂久| 色综合久久无码中文字幕| 久久亚洲AV成人无码软件| 人妻系列无码专区久久五月天| 久久综合久久综合九色| 97久久精品午夜一区二区| 久久久久高潮毛片免费全部播放 | 久久久久久亚洲精品不卡| 久久99国产精一区二区三区| 亚洲精品乱码久久久久66| 97精品依人久久久大香线蕉97| 香蕉久久夜色精品国产尤物| 老司机午夜网站国内精品久久久久久久久 | 精品久久人人妻人人做精品| 亚洲国产精品久久久久婷婷老年 | 久久99热只有频精品8|