首页 > 代码库 > 【HDOJ】1310 Team Rankings
【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_JUDGE11 #define MAXN 12512 #define INF 0xfffffff13 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_JUDGE64 freopen("data.in", "r", stdin);65 freopen("data.out", "w", stdout);66 #endif67 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.\n", buf[v].c_str(), mmin);85 }86 87 return 0;88 }
【HDOJ】1310 Team Rankings
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。