精忠觉栏—pushdown每个操作中间都要有
查看原帖
精忠觉栏—pushdown每个操作中间都要有
1127886
z3134908478楼主2024/10/12 04:18

一直0分查了几小时

void padd(int i, int l, int r, ll k) {
	if (Tr[i].l >= l && Tr[i].r <= r) {
		Tr[i].plz %= M;Tr[i].plz += k;
		Tr[i].plz %= M;
		Tr[i].num %= M;Tr[i].num += k * (Tr[i].r - Tr[i].l + 1);
		Tr[i].num %= M;
		return;
	}
	if (Tr[i].l > r || Tr[i].r < l)return;
	 pushdown(i);//嗨,是我,你爹
	if (Tr[i].l <= r)padd(i << 1, l, r, k);
	if (Tr[i].r >= l)padd(i << 1 | 1, l, r, k);
	Tr[i].num = (Tr[i << 1].num + Tr[i << 1 | 1].num) % M;
}
2024/10/12 04:18
加载中...