题目 链接
题目大意
两个相邻的数字之间可以合并成他们的和,与此同时序列的数量就会减少一个。问:最少的数量是多少个。
简析
很明显最少是1个,然后当整个序列不全是相同数的时候,一定可以合并成一种同样序列不完全相同但是个数少一个的情况 (一眼看出来的
参考代码
#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
int main() {
freopen("in.txt", "r", stdin);
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
int a;
cin >> a;
int flg = 1;
for (int i = 1; i < n; i++) {
int x;
cin >> x;
if (x != a) continue;
flg++;
}
if (flg == n) cout << n << endl;
else cout << 1 << endl;
}
return 0;
}
就干了一件事情,如果输入的序列一样,那么就输出元素的个数,表示初始状态就不可能转化,否则直接输出1,一定存在一种方案能够消到1。