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

            poj3267

            The Cow Lexicon

            Time Limit: 2000MS Memory Limit: 65536K
            Total Submissions: 5619 Accepted: 2599

            Description

            Few know that the cows have their own dictionary with W (1 ≤ W ≤ 600) words, each containing no more 25 of the characters 'a'..'z'. Their cowmunication system, based on mooing, is not very accurate; sometimes they hear words that do not make any sense. For instance, Bessie once received a message that said "browndcodw". As it turns out, the intended message was "browncow" and the two letter "d"s were noise from other parts of the barnyard.

            The cows want you to help them decipher a received message (also containing only characters in the range 'a'..'z') of length L (2 ≤ L ≤ 300) characters that is a bit garbled. In particular, they know that the message has some extra letters, and they want you to determine the smallest number of letters that must be removed to make the message a sequence of words from the dictionary.

            Input

            Line 1: Two space-separated integers, respectively: W and L
            Line 2: L characters (followed by a newline, of course): the received message
            Lines 3..W+2: The cows' dictionary, one word per line

            Output

            Line 1: a single integer that is the smallest number of characters that need to be removed to make the message a sequence of dictionary words.

            Sample Input

            6 10
            browndcodw
            cow
            milk
            white
            black
            brown
            farmer

            Sample Output

            2
            這個題目還是跟最長公共子序列類似,
            狀態表示還是用f[i]表示前i個中最少去掉的數目能夠構成合法序列
            則f[i]=i
            f[i]=min(f[i],f[j]+remove(s[j+1..i],ss[k]))
            if ss[k]能在s[j+1..i]中表示出來
            所以我們不必用LCS來求這個remove,直接用pp[k]表示第k個單詞能在s[j+1..i]中匹配到的地方的地方
            如果單詞能在其中表示出來,則min
            這類題目的類似在于f[i]總是由f[j](0<j<i)推出來的
             1#include<stdio.h>
             2#include<string.h>
             3#include<math.h>
             4#define MAX 350
             5int f[MAX];
             6char sd[MAX];
             7int pp[610],len[610];
             8char s[610][26];
             9int l1,n,i,j,k;
            10int min(int a,int b)
            11{
            12    if (a>b) return b;
            13    else return a;
            14}

            15int main()
            16{
            17    scanf("%d%d",&n,&l1);
            18    scanf("%s",&sd);
            19    for (i=l1-1;i>=0 ;i-- )
            20    {
            21        sd[i+1]=sd[i];
            22    }

            23    for (i=1; i<=n ; i++ )
            24    {
            25        scanf("%s",&s[i]);
            26        len[i]=strlen(s[i]);
            27    }

            28    for (i=1; i<=l1 ; i++ )
            29    {
            30        f[i]=i;
            31        for (j=1; j<=n ; j++)
            32        {
            33            pp[j]=len[j]-1;
            34        }

            35        for (j=i; j>=1; j--)
            36        {
            37            for (k=1; k<=n ; k++ )
            38            {
            39                if (sd[j]==s[k][pp[k]])
            40                {
            41                    pp[k]--;
            42                }

            43                if (pp[k]<0)
            44                {
            45                    f[i]=min(f[i],f[j-1]+i-j-len[k]+1);
            46                }

            47            }

            48        }

            49    }

            50    printf("%d\n",f[l1]);
            51    return 0;
            52}

            53//f[i]=min(f[j]+remove(s[j+1..i],s[k]))
            54//
            55
             

            posted on 2012-02-21 19:31 jh818012 閱讀(405) 評論(1)  編輯 收藏 引用

            評論

            # re: poj3267 2012-02-29 17:23 王私江

            我嚓,我該努力了。  回復  更多評論   

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統計

            常用鏈接

            留言簿

            文章檔案(85)

            搜索

            最新評論

            • 1.?re: poj1426
            • 我嚓,,輝哥,,居然搜到你的題解了
            • --season
            • 2.?re: poj3083
            • @王私江
              (8+i)&3 相當于是 取余3的意思 因為 3 的 二進制是 000011 和(8+i)
            • --游客
            • 3.?re: poj3414[未登錄]
            • @王私江
              0ms
            • --jh818012
            • 4.?re: poj3414
            • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
            • --王私江
            • 5.?re: poj1426
            • 評論內容較長,點擊標題查看
            • --王私江
            丁香久久婷婷国产午夜视频| 久久久久久综合网天天| 国产精品女同久久久久电影院| 色欲久久久天天天综合网| 国产亚洲美女精品久久久2020| 人妻少妇久久中文字幕一区二区| 精品久久久久久中文字幕人妻最新| 久久久精品一区二区三区| 亚洲国产精品综合久久一线| 亚洲国产精品成人久久| 91精品婷婷国产综合久久| 伊人久久五月天| 伊人色综合久久| 午夜精品久久久久久久| 久久精品免费大片国产大片| 一本久久知道综合久久| 久久久久无码中| 久久午夜电影网| 亚洲色欲久久久综合网| 久久精品无码专区免费| 久久99久久99小草精品免视看| 久久久亚洲AV波多野结衣| 久久九九久精品国产| 久久精品国产久精国产| 久久天堂AV综合合色蜜桃网 | 久久久久国产一区二区三区| 久久人人爽爽爽人久久久| 亚洲AV伊人久久青青草原| 国产—久久香蕉国产线看观看| 麻豆成人久久精品二区三区免费 | 久久香蕉综合色一综合色88| 久久天天躁狠狠躁夜夜2020一| 久久人人爽人人爽AV片| 久久av高潮av无码av喷吹| 日韩欧美亚洲综合久久影院d3| 久久精品国产亚洲AV无码娇色| 亚洲AV无码久久精品狠狠爱浪潮| 亚洲精品美女久久久久99| 久久免费看黄a级毛片| 亚洲狠狠婷婷综合久久蜜芽| 亚洲国产一成人久久精品|