青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

The 2010 ACM-ICPC Asia Chengdu Regional Contest - J Similarity 二分圖最佳匹配

When we were children, we were always asked to do the classification homework. For example, we were given words {Tiger, Panda, Potato, Dog, Tomato, Pea, Apple, Pear, Orange, Mango} and we were required to classify these words into three groups. As you know, the correct classification was {Tiger, Panda, Dog}, {Potato, Tomato, Pea} and {Apple, Pear, Orange, Mango}. We can represent this classification with a mapping sequence {A,A,B,A,B,B,C,C,C,C}, and it means Tiger, Panda, Dog belong to group A, Potato, Tomato, Pea are in the group B, and Apple, Pear, Orange, Mango are in the group C.

But the LABEL of group doesn't make sense and the LABEL is just used to indicate different groups. So the representations {P,P,O,P,O,O,Q,Q,Q,Q} and {E,E,F,E,F,F,W,W,W,W} are equivalent to the original mapping sequence. However, the representations {A,A,A,A,B,B,C,C,C,C} and {D,D,D,D,D,D,G,G,G,G} are not equivalent.

Similarity

The pupils in class submit their mapping sequences and the teacher should read and grade the homework. The teacher grades the homework by calculating the maximum similarity between pupils' mapping sequences and the answer sequence. The definition of similarity is as follow.

Similarity(S, T) = sum(Si == Ti) / L

L = Length(S) = Length(T), i = 1, 2,... L, where sum(Si == Ti) indicates the total number of equal labels in corresponding positions.

The maximum similarity means the maximum similarities between S and all equivalent sequences of T, where S is the answer and fixed.

Now given all sequences submitted by pupils and the answer sequence, you should calculate the sequences' maximum similarity.

Input

The input contains multiple test cases. The first line is the total number of cases T (T < 15). The following are T blocks. Each block indicates a case. A case begins with three numbers n (0 < n < 10000), k (0 < k < 27), m (0 < m < 30), which are the total number of objects, groups, and students in the class. The next line consists of n labels and each label is in the range [A...Z]. You can assume that the number of different labels in the sequence is exactly k. This sequence represents the answer. The following are m lines, each line contains n labels and each label also is in the range [A...Z]. These m lines represent the m pupils' answer sequences. You can assume that the number of different labels in each sequence doesn't exceed k.

Output

For each test case, output m lines, each line is a floating number (Round to 4 digits after the decimal point). You should output the m answers in the order of the sequences appearance.

Sample Input

2
10 3 3
A A B A B B C C C C
F F E F E E D D D D
X X X Y Y Y Y Z Z Z
S T R S T R S T R S
3 2 2
A B A
C D C
F F E

Sample Output

1.0000
0.7000
0.5000
1.0000
0.6667
簡明題意:
將N個物品分成K組,一個字母代表一類,然后給出2種分組方案,求最大相似度
說白了,這題就是字母的匹配,而權(quán)值則為該對匹配對應的字母個數(shù),要求求得一種匹配方案,使得權(quán)值和最大。
解法:KM
代碼:
  1# include <stdio.h>
  2# include <string.h>
  3# include <stdbool.h>
  4# define N 201
  5# define max(a,b) ((a)>(b)?(a):(b))
  6# define min(a,b) ((a)<(b)?(a):(b))
  7# define abs(a) ((a)>0?(a):-(a))
  8int map[35][35],ln[N],rn[N],match[N];
  9const int n=26;
 10bool l[N],r[N];
 11int c=0;
 12void init()
 13{
 14  int i,j,p;
 15  memset(match,-1,sizeof(match));
 16  memset(rn,0,sizeof(rn));
 17  for(i=0;i<n;i++)
 18  {
 19     ln[i]=-0xfffffff;
 20     for(j=0;j<n;j++)
 21        ln[i]=max(ln[i],map[i][j]);
 22  }

 23}

 24void adjust()
 25{
 26   int i,j,minnum=0xfffffff,p;
 27   for(i=0;i<n;i++)
 28     if(l[i])
 29     {
 30        for(j=0;j<n;j++)
 31          if(!r[j])
 32             minnum=min(minnum,ln[i]+rn[j]-map[i][j]);
 33     }

 34   for(i=0;i<n;i++)
 35   {
 36     if(l[i])
 37        ln[i]-=minnum;
 38     if(r[i])
 39        rn[i]+=minnum;
 40   }
       
 41}

 42int dfs(int pos)
 43{
 44    int i;
 45    l[pos]=1;
 46    for(i=0;i<n;i++)
 47    if(!r[i]&&ln[pos]+rn[i]==map[pos][i])
 48    {
 49        r[i]=1;
 50        if(match[i]==-1||dfs(match[i]))
 51        {
 52           match[i]=pos;
 53           return 1;
 54        }

 55    }

 56    return 0;
 57}

 58int main()
 59{
 60    int t;
 61    scanf("%d",&t);
 62    while(t--)
 63    {
 64       int num,k,m,i;
 65       char std[10001],tmp[3];
 66       scanf("%d%d%d",&num,&k,&m);
 67       for(i=0;i<num;i++)
 68       {
 69          scanf("%s",tmp);
 70          std[i]=tmp[0];
 71       }

 72       while(m--)
 73       {
 74         int total=0;
 75         memset(map,0,sizeof(map));
 76         for(i=0;i<num;i++)
 77         {
 78            scanf("%s",tmp);
 79            map[std[i]-'A'][tmp[0]-'A']++;            
 80         }

 81         init();
 82         for(i=0;i<26;i++)
 83         {
 84            while(1)
 85            {
 86               memset(l,0,sizeof(l));
 87               memset(r,0,sizeof(r));
 88               if(dfs(i)) break;
 89               else adjust();
 90            }
   
 91         }

 92         for(i=0;i<26;i++)
 93           total+=map[match[i]][i];
 94         printf("%.4f\n",total/(double)num);
 95       }

 96       
 97    }

 98    return 0;
 99}

100
101

posted on 2010-11-16 00:34 yzhw 閱讀(662) 評論(0)  編輯 收藏 引用 所屬分類: graph

<2010年11月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導航

統(tǒng)計

公告

統(tǒng)計系統(tǒng)

留言簿(1)

隨筆分類(227)

文章分類(2)

OJ

最新隨筆

搜索

積分與排名

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲无吗在线| 欧美一区二区三区播放老司机| 国产色产综合产在线视频| 亚洲国产高潮在线观看| 韩国成人精品a∨在线观看| 99国产精品自拍| 日韩一级视频免费观看在线| 久久深夜福利| 久久中文久久字幕| 国产视频久久久久久久| 亚洲视频一起| 亚洲欧美视频在线观看| 欧美日韩亚洲一区二区三区四区| 亚洲第一页中文字幕| 亚洲电影av在线| 榴莲视频成人在线观看| 欧美xx视频| 亚洲国产影院| 欧美高潮视频| 最新日韩在线| 亚洲日韩第九十九页| 欧美大片在线影院| 亚洲激情精品| 一区二区三区免费看| 欧美日韩国产999| 9i看片成人免费高清| 亚洲影视中文字幕| 国产精品麻豆va在线播放| 亚洲在线观看| 久久久久国产精品www| 激情成人综合网| 美女性感视频久久久| 亚洲国产高清自拍| 一区二区三区视频免费在线观看| 欧美日韩在线看| 亚洲一区欧美二区| 久久久久一区二区| 亚洲国产日韩精品| 欧美日本亚洲韩国国产| 一本色道久久综合精品竹菊| 欧美一区在线视频| 激情av一区| 欧美国产日韩二区| 制服丝袜亚洲播放| 老司机67194精品线观看| 亚洲黄色小视频| 欧美日韩视频专区在线播放 | 欧美激情视频网站| 夜夜躁日日躁狠狠久久88av| 国产精品久久久久天堂| 欧美一区二视频| 亚洲成在线观看| 亚洲综合色在线| 一区久久精品| 欧美日韩免费| 欧美在线亚洲在线| 亚洲精品社区| 久久亚洲精品欧美| 这里只有精品电影| 影院欧美亚洲| 国产精品va| 美女啪啪无遮挡免费久久网站| 一本一道久久综合狠狠老精东影业| 久久九九免费| 中文亚洲免费| 亚洲国产精品视频一区| 国产精品天天看| 欧美国产日韩视频| 久久精品人人做人人爽电影蜜月| 亚洲精选视频在线| 欧美www视频在线观看| 亚洲欧美欧美一区二区三区| 亚洲盗摄视频| 国产视频在线一区二区| 欧美日韩一区二区三区四区五区| 久久国产黑丝| 亚洲一区美女视频在线观看免费| 欧美激情视频一区二区三区免费| 午夜一区在线| 亚洲午夜精品福利| 亚洲精选在线观看| 狠狠色狠狠色综合| 国产精品一区二区视频| 欧美三日本三级少妇三2023| 猛男gaygay欧美视频| 久久激情网站| 午夜国产不卡在线观看视频| 一本高清dvd不卡在线观看| 亚洲高清资源| 欧美成人免费在线视频| 久久日韩粉嫩一区二区三区| 欧美一区二区三区男人的天堂| 亚洲一二三四区| 日韩视频―中文字幕| 91久久精品美女高潮| 在线观看视频一区二区| 国产一区二区三区四区在线观看 | 久久精品99无色码中文字幕| 亚洲一卡久久| 999亚洲国产精| 99re视频这里只有精品| 亚洲区一区二区三区| 91久久视频| 亚洲精品久久| 日韩网站在线看片你懂的| 亚洲精品一二三| 99精品国产福利在线观看免费| 亚洲国产一区二区三区a毛片| 在线欧美影院| 亚洲黑丝在线| 日韩视频在线免费| 亚洲天堂偷拍| 欧美一区二区视频在线| 久久精品视频导航| 免费看黄裸体一级大秀欧美| 欧美国产精品一区| 亚洲欧洲在线一区| 日韩视频三区| 亚洲伊人第一页| 久久精品视频在线播放| 久色成人在线| 欧美日韩国产欧| 国产精品青草综合久久久久99| 国产麻豆日韩| 在线精品视频免费观看| 亚洲精品欧美日韩专区| 亚洲一区二区三区激情| 欧美一区二区三区免费观看 | 99精品久久免费看蜜臀剧情介绍| 一本一道久久综合狠狠老精东影业| 一区二区欧美视频| 小黄鸭视频精品导航| 麻豆精品网站| 国产精品久久久99| 在线观看av不卡| 一区二区三区回区在观看免费视频| 亚洲欧美激情精品一区二区| 另类激情亚洲| 亚洲最黄网站| 久久日韩精品| 国产精品伦一区| 亚洲国产欧美日韩精品| 亚洲自拍偷拍视频| 欧美14一18处毛片| 在线视频亚洲一区| 麻豆91精品| 国产精品日韩精品欧美精品| 亚洲国产一二三| 久久精品国产清自在天天线| 亚洲国产成人久久| 欧美一进一出视频| 欧美人交a欧美精品| 国产综合亚洲精品一区二| 中国亚洲黄色| 欧美国产日韩精品| 羞羞色国产精品| 欧美日韩视频一区二区| 亚洲国产精品精华液2区45| 亚洲欧美精品一区| 亚洲国产精品va在看黑人| 香蕉视频成人在线观看| 欧美日韩中文在线| 亚洲国产精品久久人人爱蜜臀 | 久久综合婷婷| 国产偷国产偷精品高清尤物| 在线视频免费在线观看一区二区| 麻豆视频一区二区| 午夜伦欧美伦电影理论片| 欧美日韩在线播| 亚洲免费电影在线观看| 女生裸体视频一区二区三区| 午夜视频在线观看一区二区三区 | 亚洲欧美一区在线| 亚洲全黄一级网站| 美女主播精品视频一二三四| 国内视频一区| 欧美亚洲午夜视频在线观看| 一区二区免费在线视频| 欧美精品在线一区二区| 亚洲欧洲偷拍精品| 欧美成人网在线| 老**午夜毛片一区二区三区| 狠狠色狠狠色综合日日小说 | 亚洲欧美中文字幕| 日韩一级不卡| 欧美午夜电影网| 亚洲香蕉网站| 一区二区三区日韩| 欧美亚一区二区| 香蕉av777xxx色综合一区| 亚洲一区二区三区影院| 国产精品香蕉在线观看| 性做久久久久久| 性久久久久久久久久久久| 国产视频精品xxxx| 美女视频黄 久久| 免费欧美日韩国产三级电影| 亚洲国产导航| 亚洲激情中文1区| 欧美视频在线不卡|