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

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種分組方案,求最大相似度
說白了,這題就是字母的匹配,而權值則為該對匹配對應的字母個數,要求求得一種匹配方案,使得權值和最大。
解法: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

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

導航

統計

公告

統計系統

留言簿(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>
            国产伦精品一区二区三区| 国产精品性做久久久久久| 亚洲国产第一| 欧美99久久| 欧美精品www在线观看| 日韩午夜一区| 一区二区三区高清在线| 欧美视频免费在线| 欧美一级精品大片| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲国产精品va在线看黑人动漫| 亚洲国产日韩欧美一区二区三区| 欧美黄色一级视频| 欧美一区二区视频观看视频| 久久xxxx| 亚洲免费观看视频| 亚洲一区黄色| 亚洲成人在线视频播放| 亚洲美女在线国产| 国产自产女人91一区在线观看| 欧美本精品男人aⅴ天堂| 欧美日韩国产色综合一二三四 | 最新国产乱人伦偷精品免费网站| 亚洲精品免费一二三区| 国产精品午夜国产小视频| 久热精品视频| 欧美网站在线观看| 美女网站在线免费欧美精品| 欧美日韩亚洲一区在线观看| 久久国产精品网站| 欧美精品一区三区在线观看| 性色一区二区| 欧美另类一区二区三区| 久久久久高清| 欧美日韩中文字幕精品| 欧美电影免费观看大全| 国产精品视频免费| 亚洲精品日韩在线观看| 韩曰欧美视频免费观看| 中文在线资源观看网站视频免费不卡 | 在线观看av一区| 一本色道久久综合| 亚洲国产福利在线| 欧美一级黄色网| 这里只有精品电影| 模特精品在线| 久久免费国产精品| 国产精品一二| 一区二区三区色| 在线天堂一区av电影| 久久综合九色综合欧美就去吻| 亚洲欧美卡通另类91av| 欧美激情在线| 亚洲激情网站| 亚洲国产综合在线| 久久中文字幕一区二区三区| 久久久久久69| 国产亚洲精品高潮| 亚洲在线中文字幕| 亚洲亚洲精品三区日韩精品在线视频| 欧美刺激午夜性久久久久久久| 麻豆成人av| 亚洲国产精品嫩草影院| 久久综合久色欧美综合狠狠| 久色婷婷小香蕉久久| 国内一区二区在线视频观看| 欧美亚洲一区| 久久婷婷国产综合尤物精品| 国产亚洲精品久久久| 午夜国产精品影院在线观看 | 亚洲电影免费在线观看| 久久国产精品第一页| 久久免费精品日本久久中文字幕| 国产综合色产在线精品| 久久久91精品国产一区二区三区| 猛男gaygay欧美视频| 在线免费观看日本欧美| 免费观看国产成人| 日韩视频在线观看免费| 亚洲男同1069视频| 国产日韩欧美高清| 久久久久99| 最新国产の精品合集bt伙计| 国产精品99久久久久久www| 国产精品国产三级国产普通话99| 亚洲一本视频| 麻豆精品91| 一本色道久久综合亚洲精品不卡| 欧美日韩一区综合| 欧美一区二区在线免费播放| 免费黄网站欧美| 亚洲视频香蕉人妖| 国产一区二区黄色| 欧美大尺度在线观看| 亚洲性图久久| 亚洲成人资源网| 欧美xx视频| 一区二区三区视频在线播放| 久久精品国产精品| 亚洲美女电影在线| 国产精品亚洲综合久久| 六月婷婷久久| 午夜免费日韩视频| 91久久精品一区| 久久精品国产在热久久| 亚洲精选久久| 国产一区二区精品久久91| 欧美日产国产成人免费图片| 欧美伊人久久久久久午夜久久久久 | 欧美亚洲一区二区在线| 亚洲国产日韩综合一区| 国产欧美 在线欧美| 牛夜精品久久久久久久99黑人| 午夜国产精品影院在线观看| 亚洲精品一区在线| 欧美成人精品激情在线观看| 午夜精品久久久久99热蜜桃导演| 亚洲欧洲另类国产综合| 国语自产精品视频在线看8查询8| 欧美日在线观看| 欧美不卡一区| 久久在线观看视频| 久久精品国产77777蜜臀| 亚洲一区二区成人| 日韩午夜电影av| 亚洲人成在线播放网站岛国| 久久在线视频在线| 久久精品在线观看| 亚洲欧美亚洲| 亚洲一区久久| 这里只有精品电影| 9久re热视频在线精品| 亚洲国产欧美一区二区三区久久| 国精品一区二区三区| 国产精品一区二区三区成人| 欧美日韩精品在线| 欧美久久影院| 欧美韩国在线| 欧美激情1区2区3区| 欧美成年人视频网站欧美| 麻豆av一区二区三区久久| 久久一本综合频道| 久久综合狠狠综合久久综青草| 久久国产手机看片| 久久久久.com| 麻豆国产精品va在线观看不卡| 久久久久久久高潮| 另类激情亚洲| 欧美日韩高清在线| 欧美日韩中文在线| 国产精品日韩精品欧美在线| 国产精品一区在线观看| 国产欧美日韩亚洲| 一区二区在线免费观看| 在线观看一区视频| 亚洲美女诱惑| 亚洲欧美成人| 久久精品夜色噜噜亚洲a∨| 久久频这里精品99香蕉| 免费看黄裸体一级大秀欧美| 欧美黄色网络| 亚洲色图综合久久| 欧美中文字幕精品| 美女精品国产| 国产精品国产三级欧美二区| 国产欧美亚洲一区| 亚洲国产另类 国产精品国产免费| 亚洲精品一区在线观看| 亚洲欧美成人一区二区在线电影| 欧美一区综合| 亚洲国内自拍| 亚洲香蕉在线观看| 久久躁狠狠躁夜夜爽| 欧美日韩三区四区| 国产一区二区在线观看免费播放| 亚洲第一综合天堂另类专| 亚洲一区二区四区| 欧美a级一区二区| 亚洲视频一二三| 久久在线免费观看| 国产精品免费一区豆花| 在线观看中文字幕亚洲| 中文日韩在线| 麻豆成人91精品二区三区| 中日韩高清电影网| 欧美α欧美αv大片| 国产麻豆日韩| 一区二区三区不卡视频在线观看 | 亚洲综合清纯丝袜自拍| 久久综合久久综合这里只有精品 | 欧美先锋影音| 亚洲高清久久久| 欧美一区二区三区在线播放| 亚洲精品一区二区三区蜜桃久| 欧美伊人久久久久久午夜久久久久| 欧美日韩成人一区二区| 国内久久精品| 欧美与黑人午夜性猛交久久久| 亚洲激情在线观看| 久久综合久久美利坚合众国|