专栏文章

题解:CF928B Chat

CF928B题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miqqxguv
此快照首次捕获于
2025/12/04 09:17
3 个月前
此快照最后确认于
2025/12/04 09:17
3 个月前
查看原文
对于数列 a1,a2ana_{1},a_{2}…a_{n} ,对于每个 aia_{i}
  • ai=0a_{i} = 0 答案为第 ii 个左右 kk 个,注意判断是否可以取。
  • ai0a_{i} \ne 0 观察到题目保证 aiia_{i} ≤ i ,所以答案为第 ii 个左右 kk 个加上第 aia_{i} 个的答案减去重叠。
对于不同的情况,我们只要分开判断就行了。

代码

CPP
#include <bits/stdc++.h>
using namespace std;
int a[100005];
int main() {
	int n, k;
	cin >> n >> k;
	for (int i = 1; i <= n; i++) {
		int m;
		cin >> m;
		if (m == 0) {
			a[i] = min(k, i - 1) + 1;
		} else {
			a[i] = a[m] + min(k * 2 + 1, i - m);
		}
		cout << a[i] + min(k, n - i) <<" ";
	}
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...