不是,为什么CE啊?急急急
  • 板块学术版
  • 楼主Phrvth
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/10/18 19:50
  • 上次更新2023/11/2 13:01:14
查看原帖
不是,为什么CE啊?急急急
520544
Phrvth楼主2023/10/18 19:50

本地能过,但是交到上面去CE了

有哪位捞看看

#include <bits/stdc++.h>

using namespace std;

const int MAXN = 2e5 + 7;
const int Siz = 6.2e6 + 7;

int n, m;

struct Trie {
	struct Node { int l = 0, r = 0, sum = 0, lz = 0, cnt = 0; } t[Siz];
	#define ls(i) (t[i].l)
	#define rs(i) (t[i].r)
	
	int siz = 1;
	
	void push_up(int cur) { t[cur].sum = t[ls(cur)].sum + t[rs(cur)].sum; t[cur].cnt = t[ls(cur)].cnt + t[rs(cur)].cnt; }	
	void f(int cur, int k) { t[cur].sum += k * t[cur].cnt, t[cur].lz += k; }
	void push_down(int cur) { f(ls(cur), t[cur].lz); f(rs(cur), t[cur].lz); t[cur].lz = 0; }
	
	void insert(int &cur, int x, int v, int dep) {
		if (dep > 4) return ;
		if (! cur) { cur = ++ siz; }
		t[cur].sum += v, t[cur].cnt ++;
		if (x & (1 << (dep - 1))) insert(rs(cur), x, v, dep + 1);
		else insert(ls(cur), x, v, dep + 1);
	}
	void modify(int cur, int x, int y, int v, int dep) {
		if (dep > x + 1) return ;
		if (dep == x + 1) { f(cur, v); return ; }
		if (! cur) return ;
		push_down(cur);
		if (y & (1 << (dep - 1))) modify(rs(cur), x, y, v, dep + 1);
		else modify(ls(cur), x, y, v, dep + 1);
		push_up(cur); 
	}
	int query(int cur, int x, int y, int dep) {
		if (dep > x + 1) return 0;
		if (dep == x + 1) return t[cur].sum;
		if (! cur) return 0;
		push_down(cur);
		if (y & (1 << (dep - 1))) return query(rs(cur), x, y, dep + 1);
		else return query(ls(cur), x, y, dep + 1);
		push_up(cur); 
	}
} Trie;

int root = 1;

int main () {
	ios :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	
	cin >> n >> m;
	for (int i = 1, x; i <= n; i ++) cin >> x, Trie.insert(root, i, x, 1);
	int lastans = 0;
	while (m --) {
		int opt; cin >> opt;
		opt = (opt + lastans) % 2 + 1;
		if (opt == 1) {
			int x, y, v; cin >> x >> y >> v;
			Trie.modify(root, x, y, v, 1); 
		} else {
			int x, y; cin >> x >> y;
			cout << (lastans = Trie.query(root, x, y, 1)) << '\n';
		}
	}
	return 0;
}
2023/10/18 19:50
加载中...