zoj 2207 Team Rankings

原创 2012年03月31日 12:20:27
//由字符串“ABCDE”的所有排序(可以通过stl中的next_permutation直接得出)与input中
//的字符串进行比较,找出差距值最小的字符串!
#include "iostream"
#include "map"
#include "algorithm"
#include "string"
#include "limits.h"
using namespace std;

string input[110];
map<char, int> m;

int solve(string temp)//比较两个字符串的差距值
{
	int i, j, sum = 0;
	for (i = 0; i < 4; i++)
		for (j = i + 1; j < 5; j++)
		{
			if (m[temp[i]] > m[temp[j]])
				sum++;
		}
	return sum;
}

int main()
{
	int n, i, count, sum;
	string first, temp;
	while (cin >> n && n)
	{
		for (i = 0; i < n; i++)
			cin >> input[i];
		first = "ABCDE";
		count = INT_MAX;
		do
		{
			for (i = 0; i < 5; i++)
				m[first[i]] = i + 1;
			sum = 0;
			for (i = 0; i < n; i++)
				sum += solve(input[i]);
			if (count > sum)
			{
				count = sum;
				temp = first;
			}
		}while (next_permutation(first.begin(), first.begin() + 5));
		//由此函数可以生成字符串“ABCDE”的所有排序!
		cout << temp << " is the median ranking with value " << count << "." << endl;
	}
}

相关文章推荐

Sicily 1006. Team Rankings

题目大意:计算全排列中某一序列,与给定序列的逆序差之和最小。 解题思路: 1.在计算逆序差之和最小前,首先要算逆序差。 根据题意序列为ABCDE的全排列,我们可定义10个字母对,即: AB、A...

sicily 1006. Team Rankings

1006. Team Rankings Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description It's preseason...

Sicily 1006 Team Rankings

题意记不大清楚了,很久之前做的。只大概记得是用全排列搜索将所有的排列组合打表写在一个二维数组里,然后再根据题目要求找出最佳的一种组合。 #include #include char per[...

sicily 1006 Team Rankings

在这题卡了很久,主要是没读懂题意,今天再去看题,突然就明白了。 关键是 median ranking的定义,其实这个定义跟逆序数一个意思。 接着是对于给出的voters的处理,这些是用来做一个源字符串...
  • Dijason
  • Dijason
  • 2012年11月05日 00:23
  • 1735

算法学习【10】—— 1006. Team Rankings

题目来源:http://soj.me/1006 1006. Team Rankings Description It's preseason and the loca...
  • BetaBin
  • BetaBin
  • 2012年04月13日 20:45
  • 1733

树套树之线段树套平衡树(ZOJ2112 Dynamic Rankings)

接上篇:树套树之线段树套线段树 树套树都应该是做一道题就会了的。。 Dynamic Rankings(ZOJ 2112) 题目描述: 某公司开发了一种新型的计算机,它不再仅能找到给定N个数中第...

【可持久化线段树】【树状数组】[ZOJ 2112]Dynamic Rankings

题目大意:带修改操作的区间第K大 首先可以发现因为只有在需要使用的时候才会新建节点那么最多有nlognnlogn个节点,那么只需要在更新的时候带上值域就可以不用进行离散化了,每一次就是和普通的树状数...

ZOJ 2112 Dynamic Rankings

参考: http://blog.csdn.net/acm_cxlove/article/details/8565309 http://www.cnblogs.com/Rlemon/archive/...
  • Mr_Xujh
  • Mr_Xujh
  • 2015年08月05日 11:33
  • 299

zoj 2112 Dynamic Rankings 带修改区间第k大的几种解法

给出n个数,有两种操作,一种是修改某个数的值,另一种查询指定区间第k大。 比较快的做法是树套树,而分块算法复杂度比较高写起来方便。分块算法可以很简单的处理单独修改某个值的情况。 将n个数分成num块,...
  • HTT_H
  • HTT_H
  • 2015年08月16日 12:28
  • 1355

zoj2112--Dynamic Rankings(树状数组+主席树)

题目连接:zoj2112 给出n个点,两种操作,Q:询问在[l,r]内的第k大的数,C:更改第i个数位x 动态的询问第k大,使用树状数组修改和查询前缀和。 因为给出的空间小,所以可以将n个点做成...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:zoj 2207 Team Rankings
举报原因:
原因补充:

(最多只允许输入30个字)