璟雯院

珺璟如晔,雯华若锦

用户工具

站点工具


icpc:problems:usaco21open_acowdemia_ii_b
problems
名称Acowdemia II B
题目编号USACO21OPEN_B2
题目链接usaco.org/…
来源USACO
算法分类模拟
难易程度容易

Acowdemia II B

想法

难点在理解题目大意上,题目重点在论文作者顺序中如果出现字典序升序,则有可能出现相同贡献;当出现降序,则在一篇论文中就可以判断出资历,降序后的人资历老与降序前的人。故对题意进行模拟即可。

代码实现

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
 
const int N = 110;
string name[N];
int line[N], ans[N][N];
 
int main() {
	int n, k;
	cin >> k >> n;
	for (int i = 1; i <= n; ++i) {
		cin >> name[i];
	}
 
	string temp;
	memset(ans, -1, sizeof(ans));
	for (int i = 1; i <= k; ++i) {
		for (int j = 1; j <= n; ++j) {
			cin >> temp;
			for (int t = 1; t <= n; ++t)
				if(temp == name[t]) {
					line[j] = t;
					break;
				}
		}
		for (int j = 1; j <= n; ++j) {
			bool up = false;
			for (int t = j - 1; t >= 1; --t) {
				if(name[line[t]] > name[line[t+1]])
					up = true;
				if(up) {
					ans[line[j]][line[t]] = 1;
					ans[line[t]][line[j]] = 0;
				}
			}
		}
	}
 
	for (int i = 1; i <= n; ++i) {
		for (int j = 1; j <= n; ++j) {
			if(i == j) {
				cout << 'B';
				continue;
			}
			if(ans[i][j]==-1)
				cout << '?';
			else
				cout << ans[i][j];
		}
		cout << endl;
	}
 
	return 0;
}
/app/www/public/data/pages/icpc/problems/usaco21open_acowdemia_ii_b.txt · 最后更改: 2023/06/28 10:02 由 温婕莺