printf中调用返回值型快读会有什么问题?
  • 板块学术版
  • 楼主Umaru_
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/11/23 22:59
  • 上次更新2023/11/3 23:40:13
查看原帖
printf中调用返回值型快读会有什么问题?
159011
Umaru_楼主2021/11/23 22:59
modify(1, 1, n, read(), read(), read());
printf("%lld\n", query(1, 1, n, read(), read()));

modify可以达到正常的效果而printf中的query全部是0

函数是这样的:

void modify(int p, int l, int r, int x, int y, LL v) {
	if (l > y || r < x) return;
	if (l >= x && r <= y) return tag(p, l, r, v);
	if (tree[p].tag) push_down(p, l, r);
	int mid = l + r >> 1;
	modify(p << 1, l, mid, x, y, v);
	modify(p << 1 | 1, mid + 1, r, x, y, v);
	tree[p].sum = tree[p << 1].sum + tree[p << 1 | 1].sum;
}
LL query(int p, int l, int r, int x, int y) {
	if (l > y || r < x) return 0;
	if (l >= x && r <= y) return tree[p].sum;
	if (tree[p].tag) push_down(p, l, r);
	int mid = l + r >> 1;
	return query(p << 1, l, mid, x, y) + query(p << 1 | 1, mid + 1, r, x, y);
}
2021/11/23 22:59
加载中...