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;
}