CF1478-A. Nezzar and Colorful Balls

CF1478-A. Nezzar and Colorful Balls

题意:

\(n\)个球,每个球上面都有一个数字\(a_i\),这些数字是组成的序列是非递减的。现在你要给每个球涂色,你必须保证相同颜色的球上面的数字组成一个严格递增序列。问你最少多少种颜色可以实现上述要求?


思路:

比赛的时候卡题意了,题意确实有点难懂,这里以题目中的第一个组数据进行解释,同时也将思路理顺:

你有6个球,每个球上的数字分别为1 1 1 2 3 4分别计为\(a_1, a_2, a_3, a_4, a_ 5, a_6\),你可以给\(a_1,a_2,a_3\)涂上红色(这里只是举个例子),但这不符合题目要求,题目要求的是严格递增,\(a_1,a_2,a_3\)序列中有两个\(1\)它不是严格递增的。你可以给\(a_1,a_4,a_5,a_6\)涂上红色,这样是符合的严格递增的要求,而对于\(a_2,a_3\)可以分别涂上蓝色和绿色,这样就是三种颜色,答案为\(3\)

通过上面的解释应该能察觉出意思规律,答案就是最多的那个数字的数量。


AC代码:

#include <cstdio>
#include <cstring>
#include <algorithm>

const int Maxn = 105;

int a[Maxn];

void solve() {
	int n;
	scanf("%d", &n);
	for (int i = 0; i < n; i++) {
		scanf("%d", a + i);
	}
	int ans = 0, t = 1;
	for (int i = 1; i < n; i++) {
		if (a[i] != a[i - 1]) {
			ans = std::max(ans, t);
			t = 1;
		} else {
			t++;
		}
	}
	ans = std::max(ans, t);
	printf("%d\n", ans);
}

int main() {
	int T;
	scanf("%d", &T);
	while (T--) {
		solve();
	}
	return 0;
}

posted @ 2021-01-29 13:26  牟翔宇  阅读(213)  评论(0编辑  收藏  举报