进食后人,如果你 40pts
  • 板块P4314 CPU 监控
  • 楼主Svemit
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/13 16:43
  • 上次更新2024/8/13 19:19:41
查看原帖
进食后人,如果你 40pts
503792
Svemit楼主2024/8/13 16:43

注意在把 tag 中传递到 Info 时,需要先更新历史最大值,再更新最大值,因为历史最大值的更新需要用到更新前的最大值。

具体的,你的代码不应该是:

Info operator + (Info lhs, Tag rhs) {
	auto [add, cov, hadd, hcov] = rhs;
    lhs.hmaxv = max({lhs.hmaxv, lhs.maxv + hadd, hcov});
	if (cov != -inf) {
		lhs.maxv = cov;
	} else {
		lhs.maxv += add;
	}
    return lhs;
}

而不是

Info operator + (Info lhs, Tag rhs) {
	auto [add, cov, hadd, hcov] = rhs;
	if (cov != -inf) {
		lhs.maxv = cov;
	} else {
		lhs.maxv += add;
	}
  lhs.hmaxv = max({lhs.hmaxv, lhs.maxv + hadd, hcov});
    return lhs;
}

给出一组讨论区的 hack。

2
0 0
3
P 1 2 4
C 1 2 1
A 2 2

应输出 4。

2024/8/13 16:43
加载中...