2022.11.18
P4019
一开始以为操作 \(③\) 中的 \(x\) 和 \(y\) 是可以不相邻的,于是就裂开了。
这题只要先把操作记录下来,把操作 \(③\) 里的点合并起来,把操作 \(①②\) 用 \(bool\) 数组记录一下,直接枚举 \(1\) 号点的颜色然后 \(DP\) 就好了,复杂度 \(\Theta(nc^2)\)。
注意判断操作 \(①②\) 的冲突情况。
P2221
线段树入门题。
注意不要爆 \(long long\)。
比如这里:
code
if(op == 'Q'){
int l = rd(), r = rd();
if(l == r)
printf("0/1\n");
else{
ll up = T.query(1, l, r - 1).val;
ll down = 1ll * (r - l) * (r - l + 1) / 2;// 这里曾寄了一回
ll g = gcd(up, down);
printf("%lld/%lld\n", up / g, down / g);
}
}