数据下载下来没错,交上去全WA
查看原帖
数据下载下来没错,交上去全WA
669825
SpringFullGarden楼主2023/8/24 11:15

RT\text{RT}

#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define ui unsigned int
#define sp() putchar(' ')
#define et() putchar(' \n')
#define nw tree[x]
#define lt tree[x << 1]
#define rt tree[x << 1 | 1]
#define ls x << 1
#define rs x << 1 | 1
//#pragma GCC optimize(2)
using namespace std;

inline ll rd() {
    ll x = 0, f = 1; char ch = getchar();
    while(ch < '0' || ch > '9') {if (ch == '-') f = -1; ch = getchar(); }
    while(ch >= '0' && ch <= '9') x = x * 10 + ch - 48, ch = getchar();
    return x * f;
}
inline void wt(ll x) {
    if(x < 0) putchar('-'), x = -x;
    if(x > 9) wt(x / 10);
    putchar(x % 10 + '0');
    return;
}

struct node {
	ll l, r, sm, lz;
} tree[414514];
ll n, m, t, a[114514];

void bd(ll x, ll l, ll r) {
	nw.l = l, nw.r = r;
	if(l == r) {nw.sm = 2; return; }
	ll mid = (l + r) >> 1;
	bd(ls, l, mid), bd(rs, mid + 1, r);
	nw.sm = lt.sm | rt.sm;
	return;
}
void dn(ll x) {
	lt.lz = nw.lz, rt.lz = nw.lz;
	lt.sm = nw.lz, rt.sm = nw.lz;
	nw.lz = 0;
	return;
}
void ad(ll x, ll l, ll r, ll k) {
	if(nw.lz) dn(x);
	if(nw.r < l || nw.l > r) return;
	if(nw.l >= l && nw.r <= r) {
		nw.sm = 1 << k;
		nw.lz = 1 << k;
		return;
	}
	ad(ls, l, r, k), ad(rs, l, r, k);
	nw.sm = lt.sm | rt.sm;
	return;
}
ll fd(ll x, ll l, ll r) {
	if(nw.lz) dn(x);
	if(nw.r < l || nw.l > r) return 0;
	if(nw.l >= l && nw.r <= r) return nw.sm;
	return fd(ls, l, r) | fd(rs, l, r);
}
ll ct(ll x) {
	int ans = 0; 
	while(x) ans += x & 1, x >>= 1;
	return ans;
}
int main() {
//	freopen("P1558_1.in", "r", stdin);
//	freopen("P1558.out", "w", stdout);
	n = rd(), t = rd(), m = rd();
	bd(1, 1, n);
	for(ll i = 1; i <= m; i++) {
		char c = getchar();	
		ll l = rd(), r = rd(), k;
		if(l > r) swap(l, r);
		if(c == 'C') k = rd(), ad(1, l, r, k);
		if(c == 'P') wt(ct(fd(1, l, r))), et();
	}
	return 0;
} 
2023/8/24 11:15
加载中...