首页| 新闻| 娱乐| 游戏| 科普| 文学| 编程| 系统| 数据库| 建站| 学院| 产品| 网管| 维修| 办公| 热点
如图所示,在由N行M列个单位正方形组成的矩形中,有K个单位正方形是黑色的,其余单位正方形是白色的。
你能统计出一共有多少个不同的子矩形是完全由白色单位正方形组成的吗?
第一行三个整数:N, M和K。
之后K行每行包括两个整数R和C,代表一个黑色单位正方形的位置。
1 <= N,M <= 1000
1 <= K <= 10
1 <= R <= N
1 <= C <= M
输出一个整数表示满足条件的子矩形个数。
3 3 12 3 样例输出24
24
#include <cstdio>#include <iostream>using namespace std;int main(){ freopen( "/home/liyuanshuo/ClionPRoject/hihocoder8/in.in", "r", stdin); long long ans; int n, m, k; int a[12][2]; while( scanf("%d%d%d", &n, &m, &k) != EOF ) { for(int i = 0; i < k; i++) { scanf("%d%d", &a[i][0], &a[i][1]); a[i][0]--, a[i][1]--; } ans = 0; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { ans += (n - i) * (m - j); } } for(int code = 1; code < (1 << k); code++) { int l = m, r = 0, u = n, d = 0, cnt = 0; for(int i = 0; i < k; i++) { if( (code & (1 << i)) != 0 ) { l = min(l, a[i][0]), u = min(u, a[i][1]); r = max(r, a[i][0] + 1), d = max(d, a[i][1] + 1); cnt++; } } if(cnt % 2 == 0) ans += ((long long)(l + 1)) * (u + 1) * (m - r + 1) * (n - d + 1); else ans -= ((long long)(l + 1)) * (u + 1) * (m - r + 1) * (n - d + 1); } cout << ans << endl; } return 0;}
索泰发布一款GTX 1070 Mini迷
AMD新旗舰显卡轻松干翻NVIDIA
索泰发布一款GTX 1070 Mini迷你版本:小机
芭蕾舞蹈表演,真实美到极致
下午茶时间,悠然自得的休憩
充斥这繁华奢靡气息的城市迪拜风景图片
从山间到田野再到大海美丽的自然风景图片
肉食主义者的最爱美食烤肉图片
夏日甜心草莓美食图片
人逢知己千杯少,喝酒搞笑图集
搞笑试卷,学生恶搞答题
新闻热点
疑难解答
图片精选
Dictionary数据类型在Darwin视频服
可穿戴手势识别控制器
网友关注