CF1839A The Good Array 题解
Furthe77oad · · 个人记录
CF1839A
写在最前
建议评红。
本题利用贪心思想,分类讨论后即可分析出正解。
分析
我们仔细地看完题。
首先考虑特殊情况
重要的是,想要序列
在理解上述的分析后,请读者讨论接下来的问题:如果要满足另一要求,我们只需要额外插入的
设
-
若
d \gt 0 ,则易得0 \lt d \lt k ,此时无需再多插1 ,答案即为\lfloor\frac{n-2}{k}\rfloor+2 。 -
若
d = 0 ,则说明x \times k + 1 与n 重合,并且n 又是满足第二要求的第一个1 的位置,故此时无需多插1 ,易得答案为\lfloor\frac{n-2}{k}\rfloor+2 。 -
若
d = -1 ,则说明xk+1=n+1 ,此时把(x-1) \times k+1 作为新的x' \times k+1 ,则答案仍为\lfloor\frac{n-2}{k}\rfloor+2 。
易证:时间复杂度为
参考之码
#include <bits/stdc++.h>
using namespace std;
int t, n, k;
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin >> t;
while (t--) {
cin >> n >> k;
cout << (n - 2) / k + 2 << "\n";
}
return 0;
}
写在最后
顺带一提,我在做的时候,没有完美地证明该题的正解,而是直接猜到了结论,所以由此观之,我们在网赛时,应该有意识的去培养我们的做题手感。
以上为个人观点。