线段树WA 0pts 原因总结
  • 板块P1471 方差
  • 楼主Ephemeron
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/16 23:44
  • 上次更新2024/10/17 12:49:49
查看原帖
线段树WA 0pts 原因总结
557961
Ephemeron楼主2024/10/16 23:44

先保证推的公式没错

1.题目中说的是 NN实数,所以要开double

2.线段树的修改函数中 kk 要开double(仔细检查该开double的地方都开没开)

3.(本人原因)我写了一个名为maketag的函数,下面给出错误版本和正确版本

//正确版本
inline void maketag(int u, int l, int r, double x) {
	lazy[u] += x;
	sum2[u] += (r - l + 1) * x * x + 2.0 * x * sum1[u];
	sum1[u] += x * (r - l + 1);
}
//错误版本
inline void maketag(int u, int l, int r, double x) {
	lazy[u] += x;
	sum2[u] += (r - l + 1) * lazy[u] * lazy[u] + 2.0 * lazy[u] * sum1[u];
	sum1[u] += lazy[u] * (r - l + 1);
}

就是在下传时,没有正确更新维护的值,不是按照每次的修改值更新,而是原来这个区间就有的懒标记更新

这离谱错误我居然调了好久才看出来,我太蒻了……

2024/10/16 23:44
加载中...