1 条题解
-
0
给定长度为 的序列 。
如果 则可以合并 和 ,合并的元素后值为它们的和,总元素个数减一。
求进行若干次合并操作后最后元素个数的最小值。
,。
对于序列的最大值,除非两边点值都和它相同,否则它就可以一直合并直到只剩一个。
所以分类讨论一下,是不是所有元素都相等。
CODE
#include <bits/stdc++.h> using namespace std; inline int read() { int x = 0, f = 0; char c = 0; while (!isdigit(c)) f |= c == '-', c = getchar(); while (isdigit(c)) x = (x << 3) + (x << 1) + (c & 15), c = getchar(); return f ? -x : x; } int a[200010]; int main() { for (int T = read(); T --;) { int n = read(), id = 0, same = 1; for (int i = 1; i <= n; i ++) { a[i] = read(); if (i != 1 && a[i - 1] != a[i]) same = 0; } if (same) printf("%d\n", n); else puts("1"); } return 0; }
- 1
信息
- ID
- 806
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者