zoukankan      html  css  js  c++  java
  • 【HDOJ】1310 Team Rankings

    STL的应用,基本就是模拟题。

     1 /* 1410 */
     2 #include <iostream>
     3 #include <string>
     4 #include <algorithm>
     5 #include <map>
     6 #include <cstdio>
     7 #include <cstring>
     8 using namespace std;
     9 
    10 #define ONLINE_JUDGE
    11 #define MAXN 125
    12 #define INF 0xfffffff
    13 
    14 int nn;
    15 int dis[MAXN][MAXN];
    16 string buf[MAXN];
    17 bool visit[5];
    18 map<string, int> tb;
    19 int a[MAXN];
    20 
    21 int myabs(int x) {
    22     return x<0 ? -x:x;
    23 }
    24 
    25 void init() {
    26     string s = "ABCDE";
    27     nn = 0;
    28     int i, j, k, p;
    29     int sum, tmp;
    30     
    31     do {
    32         buf[nn] = s;
    33         tb[s] = nn++;
    34     } while (next_permutation(s.begin(), s.end()));
    35     
    36     for (i=0; i<nn; ++i) {
    37         dis[i][i] = 0;
    38         for (j=i+1; j<nn; ++j) {
    39             sum = 0;
    40             memset(visit, false, sizeof(visit));
    41             for (k=0; k<5; ++k) {
    42                 for (p=0; p<5; ++p) {
    43                     if (buf[j][p] == buf[i][k])
    44                         break;
    45                     else if (!visit[buf[j][p]-'A'])
    46                         ++sum;
    47                 }
    48                 visit[buf[i][k]-'A'] = true;
    49             }
    50             dis[i][j] = dis[j][i] = sum;
    51         }
    52     }
    53 }
    54 
    55 int main() {
    56     int n;
    57     int i, j, k, tmp;
    58     int    v, mmin, sum;
    59     string s;
    60     
    61     ios::sync_with_stdio(false);
    62     
    63     #ifndef ONLINE_JUDGE
    64         freopen("data.in", "r", stdin);
    65         freopen("data.out", "w", stdout);
    66     #endif
    67     
    68     init();
    69     while (cin>>n && n) {
    70         for (i=0; i<n; ++i) {
    71             cin >>s;
    72             a[i] = tb[s];
    73         }
    74         mmin = INF;
    75         for (i=0; i<nn; ++i) {
    76             sum = 0;
    77             for (j=0; j<n; ++j)
    78                 sum += dis[i][a[j]];
    79             if (sum < mmin) {
    80                 v = i;
    81                 mmin = sum;
    82             }
    83         }
    84         printf("%s is the median ranking with value %d.
    ", buf[v].c_str(), mmin);
    85     }
    86     
    87     return 0;
    88 }
  • 相关阅读:
    你不能忽视的HTML代码2精编篇
    C#中析构函数和命名空间的妙用
    值类型和引用类型及其它
    这些年我收集的GDI+代码2
    C#中超级好用的字符串
    Javascript的压缩优化
    Spring和hibernate多个数据源的事务管理
    android中Handler,Looper,Message的开发答疑
    Spring引用Tomcat的 JTA事务
    js禁止用户刷新页面
  • 原文地址:https://www.cnblogs.com/bombe1013/p/4248376.html
Copyright © 2011-2022 走看看