专栏文章

『SNKOI』R2 | T2 题解

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

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@mip4rnel
此快照首次捕获于
2025/12/03 06:09
3 个月前
此快照最后确认于
2025/12/03 06:09
3 个月前
查看原文
依旧卡常。空间不够,不能开数组,用滚动变量优化。
首先翻译一下题目,即序列第 00 位为 nn,若 iai1(1in)i \ge a_{i - 1} (1 \le i \le n),则 Ai=Ai1iA_i = A_{i - 1} - i,否则 Ai=Ai1+iA_i = A_{i - 1} + i
由于 aia_i 仅与 ai1a_{i - 1}ii 有关,用一个变量滚动,再用 sumsum 统计总和即可。
时间复杂度 O(n)O(n)

Code

CPP
#include<cstdio>

#define ll long long

const int MOD = 998244353;
int n, m;
ll sum; 

int main(){
	freopen("sequence.in", "r", stdin);
	freopen("sequence.out", "w", stdout);
    scanf("%d", &n); m = n, sum = n;
    for(int i = 1; i <= n; i ++){
		if(m >= i) m = m - i;
		else m = m + i;
		sum = (sum + m) - (sum + m >= MOD) * MOD;
	}
	printf("%lld\n", sum);
    return 0;
}

评论

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

正在加载评论...