每日一题之 hiho234周 矩形计数 (容斥原理)

小编 2026-07-01 阅读:391 评论:0
描述 如图所示,在由N行M列个单位正方形组成的矩形中,有K个单位正方形是黑色的,其余单位正方形是白色的。 你能统计出一共有多少个不同的子矩形是完全由白色单位正方形组成的吗? 输入 第一行三个...

描述
如图所示,在由N行M列个单位正方形组成的矩形中,有K个单位正方形是黑色的,其余单位正方形是白色的。

\"在这里插入图片描述\"

你能统计出一共有多少个不同的子矩形是完全由白色单位正方形组成的吗?

输入
第一行三个整数:N, M和K。

之后K行每行包括两个整数R和C,代表一个黑色单位正方形的位置。

1 <= N,M <= 1000

1 <= K <= 10

1 <= R <= N

1 <= C <= M

输出
输出一个整数表示满足条件的子矩形个数。

样例输入
3 3 1
2 3
样例输出
24

思路:

这题使用容斥原理来进行计算,通过枚举i=[0,2k1]i=[0,2^k−1]i=[0,2k1]来枚举所有不能被包含的格子的一种组合,这个组合如果包含奇数个格子,那么这一项为负数,如果包含偶数个格子(包含0个也是偶数),那么这一项为整数。

每一项的具体值如下计算:对于这些不能包含的格子,统计最左最右最上最下的位置——4个坐标,不妨设为lx,rx,ly,ry,则至少包含这些格子的方案数为lx×ly×(n−rx+1)×(m−ry+1)。

最后将所有项加在一起,就可以计算出答案。

#include <bits/stdc++.h>

using namespace std;

typedef long long llint;

const int maxn = 1e9+7;

llint mat[15][2];



void solve(int k, llint n, llint m) {

	llint res = n*(n+1)/2*m*(m+1)/2;
	for (int i = 1; i < (1<<k); ++i) { //枚举被包含的黑色矩形的个数,
		
		int num = __builtin_popcount(i);// 1的个数代表黑色矩形的个数

		llint lx = maxn;
		llint ly = maxn;
		llint rx = -1;
		llint ry = -1;

		for (int j = 0; j < k; ++j) {
			if ((1<<j) & i) {
				lx = min(lx, mat[j][0]); //最左
				ly = min(ly, mat[j][1]); //最上
				rx = max(rx, mat[j][0]); //最右
				ry = max(ry, mat[j][1]); //最下
			}
		}
		llint tmp = lx*ly*(n-rx+1)*(m-ry+1);
		if (num%2) res -= tmp;
		else 
			res += tmp;
	}

	cout << res << endl;
}

int main() {

	llint n, m, k;
	cin >> n >> m >> k;
	for (int i = 0; i < k; ++i) {
		cin >> mat[i][0] >> mat[i][1];
	}

	solve(k, n, m);

	return 0;
}

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表