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

            pku 1625 Censored! 自動機經典題,手寫高精度WA了5次。。。。。

            題意:
            問不包含n個子串的長度為m的字符串的構造個數。

            解法:
            構造trie圖,然后DP求長度為m的合法串個數
            以前高精度都靠java,這次手寫,各種錯誤。。。唉。。

            代碼:
              1 # include <iostream>
              2 # include <cstring>
              3 using namespace std;
              4 struct BigInteger
              5 {
              6     int bit[100];
              7     bool init;
              8     BigInteger()
              9     {
             10         memset(bit,0,sizeof(bit));
             11         init=true;
             12     }
             13     BigInteger operator+(const BigInteger &pos)
             14     {
             15         BigInteger res;
             16         res.init=init;
             17         for(int i=0;i<99;i++)
             18         {
             19             res.bit[i]+=bit[i]+pos.bit[i];
             20             res.bit[i+1]+=res.bit[i]/10;
             21             res.bit[i]%=10;
             22         }
             23         return res;
             24     }
             25     void print()
             26     {
             27         int i;
             28         for(i=99;i>0&&!bit[i];i--);
             29         for(int j=i;j>=0;j--)
             30             cout<<bit[j];
             31         cout<<endl;
             32     }
             33 };
             34 struct node
             35 {
             36     node *nxt[51],*pre;
             37     bool end;
             38     void clear()
             39     {
             40         memset(nxt,NULL,sizeof(nxt));
             41         end=false;
             42         pre=NULL;
             43     }
             44     node()
             45     {
             46         clear();
             47     }
             48 }buffer[200];
             49 int map[255];
             50 int c=1,n,m,num;
             51 void insert(char *str)
             52 {
             53     node *p=buffer;
             54     for(int i=0;str[i]!='\0';i++)
             55     {
             56         if(!(p->nxt[map[str[i]]]))
             57                 p->nxt[map[str[i]]]=&buffer[c++];
             58         p=p->nxt[map[str[i]]];
             59     }
             60     p->end=true;
             61 }
             62 void make_per()
             63 {
             64     int s=-1,e=-1;
             65     node *q[200];
             66     node *p=buffer;
             67     for(int i=0;i<n;i++)
             68         if(p->nxt[i])
             69         {
             70             p->nxt[i]->pre=p;
             71             q[++e]=p->nxt[i];
             72         }
             73         else
             74             p->nxt[i]=p;
             75     while(s!=e)
             76     {
             77         p=q[++s];
             78         for(int i=0;i<n;i++)
             79         {
             80             node *pre=p->pre;
             81             while(pre->nxt[i]==NULL) pre=pre->pre;
             82             if(p->nxt[i])
             83             {
             84                 p->nxt[i]->pre=pre->nxt[i];
             85                 p->nxt[i]->end=(p->nxt[i]->pre->end||p->nxt[i]->end);
             86                 q[++e]=p->nxt[i];
             87             }
             88             else
             89                 p->nxt[i]=pre->nxt[i];
             90         }
             91     }
             92 }
             93 BigInteger dp[200][55],zero,one;
             94 BigInteger solve(int s,node *p)
             95 {
             96     if(p->end) return zero;
             97     else if(s==m) return one;
             98     else if(!(dp[p-buffer][s].init)) return dp[p-buffer][s];
             99     else
            100     {
            101         dp[p-buffer][s].init=false;
            102         for(int i=0;i<n;i++)
            103         { 
            104             dp[p-buffer][s]=dp[p-buffer][s]+solve(s+1,p->nxt[i]);
            105         }
            106         return dp[p-buffer][s];
            107     }
            108 
            109 }
            110 int main()
            111 {
            112     cin>>n>>m>>num;
            113     char str[128];
            114     cin>>str;
            115     int tc=0;
            116     for(int i=0;str[i]!='\0';i++)
            117         map[str[i]]=tc++;
            118     while(num--)
            119     {
            120         cin>>str;
            121         insert(str);
            122     }
            123     make_per();
            124     one.bit[0]=1;;
            125     solve(0,buffer);
            126     dp[0][0].print();
            127     return 0;
            128 
            129 }


            posted on 2011-01-13 09:57 yzhw 閱讀(300) 評論(1)  編輯 收藏 引用 所屬分類: DPstring algorithm

            評論

            # re: pku 1625 Censored! 自動機經典題,手寫高精度WA了5次。。。。。 2011-01-13 09:58 yzhw

            為什么用矩陣乘法不可以?誰能解釋下。。  回復  更多評論   

            <2011年1月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            国产一久久香蕉国产线看观看| 久久精品二区| 粉嫩小泬无遮挡久久久久久| 色噜噜狠狠先锋影音久久| 欧美日韩成人精品久久久免费看| 久久精品国产AV一区二区三区| 69国产成人综合久久精品| 欧美国产精品久久高清| 久久99热精品| 日韩精品久久久久久久电影蜜臀| 一本久久久久久久| 久久婷婷五月综合色高清 | 国产V综合V亚洲欧美久久| 久久免费国产精品| 日韩亚洲欧美久久久www综合网| 亚洲午夜久久久久久久久久| 韩国三级中文字幕hd久久精品| 久久这里只有精品18| 欧美日韩精品久久久久| 久久久久久亚洲精品不卡 | 久久99精品国产麻豆不卡| 久久99精品久久久久婷婷| 久久人人爽人人爽人人片av麻烦 | 久久久国产精品福利免费| 亚洲国产精品无码久久久不卡| 久久午夜综合久久| 久久99久久无码毛片一区二区| 99久久无色码中文字幕| 久久亚洲精品成人AV| 欧美丰满熟妇BBB久久久| 亚洲欧美日韩久久精品第一区| 久久综合鬼色88久久精品综合自在自线噜噜 | 精品久久久久久无码不卡| 久久AAAA片一区二区| 久久国产精品波多野结衣AV| 久久涩综合| 思思久久99热只有频精品66| 久久天天躁狠狠躁夜夜躁2014| 精品国产乱码久久久久久人妻| 色欲综合久久中文字幕网| 久久99国内精品自在现线|