USACO月赛2019年01月铜组

本文提供了三道编程题目的解答方案:T1ShellGame涉及数组和条件判断;T2SleepyCowSorting关注排序算法的应用;T3GuesstheAnimal则通过字符串匹配实现算法优化。这些题目有助于理解基础算法思想及其实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

T1 Shell Game
#include <iostream>
using namespace std;

const int N = 105;
int n, maxx, a[N], b[N], g[N];

int f(int pos) {
	int cnt = 0;
	for (int i = 1; i <= n; i ++) {
		if (pos == a[i]) pos = b[i];
		else if (pos == b[i]) pos = a[i];
		
		if (pos == g[i]) cnt ++;
	}
	return cnt;
}

int main() {
	cin >> n;
	for (int i = 1; i <= n; i ++) cin >> a[i] >> b[i] >> g[i];
	
	for (int i = 1; i <= 3; i ++) {
		//假设开始的位置是 i 
		maxx = max(maxx, f(i));
	}
	cout << maxx;
		
	return 0;
}


T2 Sleepy Cow Sorting
#include <iostream>
using namespace std;

int n, a[105];

int main() {
	cin >> n;
	for (int i = 1; i <= n; i ++) cin >> a[i];

	int ans = 0;
	for (int i = n-1; i >= 1; i --) {
		if (a[i] > a[i+1]) {
			ans = i;
			break;
		}
	}
	cout << ans;
	
	return 0;
}
T3 Guess the Animal
#include <iostream>
using namespace std;

const int N = 105;
int n, k, cnt[N];
string a[N][N], s;

int f(int x, int y) {
	int res = 0;
	for (int i = 1; i <= cnt[x]; i ++) {
		for (int j = 1; j <= cnt[y]; j ++) {
			if (a[x][i] == a[y][j]) res ++;			
		}
	}	
	return res;
}

int main() {
	cin >> n;
	for (int i = 1; i <= n; i ++) {
		cin >> s >> cnt[i];
		for (int j = 1; j <= cnt[i]; j ++) {
			cin >> a[i][j];
		}
	}
	
	int maxx = 0;
	for (int i = 1; i <= n; i ++) {
		for (int j = i + 1; j <= n; j ++) {
			maxx = max(maxx, f(i, j));
		}
	}
	cout << maxx + 1;

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值