CF1392A Omkar and Password思路
可以说,这道题目是一道很重要的规律题。
没事闲的看犇的时候看到了这道题目,还是写一篇题解来一下吧,望通过,这样我就能橙了 qwq
首先呢,上述说过了是规律题,得到的规律应该是这样的:
当所以数相等时,数的个数就是最后数列的长度,如果并不是所有数都相等,则 \(1\) 为最后的长度。
可以先设这一个为基本的猜想,我要讲的是证明:
都相同时
请看题目中说了
对于两个相邻的且不相同的数,你可以将他们合并起来,即将这两个数替换成它们的和。
因此,可以知道的是,相同的时候一个都合并不了喽 qwq
至少一个不同
如下面的数,可见一定是一个最不利的 qwq:
$1\ 2\ 2\ 2\ 2\ 2\ $
如果这列数中有无数多个 \(2\)(且假定只有开头的一个 \(1\) ),那么,我们可以先将两个不同的(即 \(1\) 和 \(2\))进行第一次合并,接着,可以再将两个不同的数(即 \(2\) 和 \(3\))进行一次合并,之后我们可以发现,每一次合并之后,都会出现一个 不同 的数,而这个不同的数又可以继续合并……因此,最终,不论多长的数,都能化简为所有这些数的和!
上述是验证的过程,下面是全部代码 qwq:
#include <iostream>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
bool flag = 1;
int m;
cin >> m;
int flag2 = m;
for (int i = 2; i <= n; i++) {
int a;
cin >> a;
if (a != m) {
flag = 0;
}
}
if (flag == 0) {
cout << 1 << endl;
}
else {
cout << n << endl;
}
}
}
这是本题的思路,希望对您有帮助 qwq

浙公网安备 33010602011771号