省选模拟 19/11/05
Posted qq62c30ac77b2a7
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了省选模拟 19/11/05相关的知识,希望对你有一定的参考价值。
黑白划分 最后答案的个数就是非纯色正方形的个数
考虑容斥,用总的减去纯色的
发现对每一个纯色的都要减去它覆盖的四个的贡献,而这样减正好能减完,令 表示边长为 的个数
然后发现两个维度是独立的,我们对两个维度分别求出它的连续纯色区间个数,乘起来就是答案
分离两个维度的考虑巧妙
using namespace std;
int read()
int cnt = 0, f = 1; char ch = 0;
while(!isdigit(ch)) ch = getchar(); if(ch == -) f = -1;
while(isdigit(ch)) cnt = cnt*10 + (ch-0), ch = getchar();
return cnt * f;
cs int N = 21, M = 1 << 20 | 5;
typedef long long ll;
int n, q, S, lg[M];
struct Segmentree
int sum[M << 2], ct[N];
void pushup(int x, int l, int r)
int pre = sum[x];
sum[x] = sum[6687. 2020.06.04省选模拟树没了(tree)