【hihocoder 1476】矩形计数
【题目链接】:http://hihocoder.com/problemset/problem/1476
【题意】
【题解】
首先不考虑黑格子,计算出一共有多少个矩形:
枚举矩形的大小r×c,这样大小的矩形一共有(N−r+1)(M−c+1)个。
然后减去不符合要求的矩形,也就是减去包含第一个黑格子的矩形个数,减去包含第二个黑格子,第三个的……
然后再加上包含第一第二黑格子的矩形数……
也就是容斥原理。
(奇数个黑色格子就减,偶数个就加)
每一项的具体值如下计算:对于这些不能包含的格子,统计最左最右最上最下的位置——4个坐标,不妨设为lx,rx,ly,ry,则至少包含这些格子的方案数为lx×ly×(n−rx+1)×(m−ry+1)。
【Number Of WA】
1
【完整代码】
#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 15;
LL n,m,k,ans;
pll a[N];
int main()
{
//freopen("F:\\rush.txt","r",stdin);
ios::sync_with_stdio(false),cin.tie(0);//scanf,puts,printf not use
cin >> n >> m >> k;
rep1(i,1,k)
cin >> a[i].fi >> a[i].se;
rep1(i,1,n)
rep1(j,1,m)
ans+=1LL*(n-i+1)*(m-j+1);
rep1(i,1,(1<<k)-1)
{
int cnt = 0;
LL lx,ly,rx,ry;
rep1(j,0,k-1)
{
if ((i>>j)&1)
{
cnt++;
if (cnt==1)
{
lx = a[j+1].fi,ly = a[j+1].se;
rx = a[j+1].fi,ry = a[j+1].se;
}
else
{
lx = min(lx,a[j+1].fi),ly = min(ly,a[j+1].se);
rx = max(rx,a[j+1].fi),ry = max(ry,a[j+1].se);
}
}
}
if (cnt&1)
ans-=1LL*lx*ly*(n-rx+1)*(m-ry+1);
else
ans+=1LL*lx*ly*(n-rx+1)*(m-ry+1);
}
cout << ans << endl;
return 0;
}
【hihocoder 1476】矩形计数的更多相关文章
- 容斥 或者 单调栈 hihocoder #1476 : 矩形计数 和 G. Snake Rana 2017 ACM Arabella Collegiate Programming Contest
先说一个简单的题目(题目大意自己看去,反正中文):hihocoder上的:http://hihocoder.com/problemset/problem/1476 然后因为这个n和m的矩阵范围是100 ...
- hiho 1476 - 矩形计数 容斥
题目链接 如图所示,在由N行M列个单位正方形组成的矩形中,有K个单位正方形是黑色的,其余单位正方形是白色的. 你能统计出一共有多少个不同的子矩形是完全由白色单位正方形组成的吗? ----------- ...
- hihoCoder 1040 矩形判断(计算几何)
http://hihocoder.com/problemset/problem/1040 首先判断四条线段是否相交,给出八个点,如果有一些点重合,并且不同坐标的点只有4个的话,表示可以构成四边形. 然 ...
- FOJ (FZU) 1476 矩形的个数 排列组合。
http://acm.fzu.edu.cn/problem.php?pid=1476 Problem Description 在一个3*2的矩形中,可以找到6个1*1的矩形,4个2*1的矩形3个1* ...
- HihoCoder - 1040 矩形判断
矩形判断 给出平面上4条线段,判断这4条线段是否恰好围成一个面积大于0的矩形. Input 输入第一行是一个整数T(1<=T<=100),代表测试数据的数量. 每组数据包含4行,每行包含4 ...
- hihocoder #1040 矩形判断(计算几何问题 给8个点的坐标,能否成为一个矩形 【模板思路】)
#1040 : 矩形判断 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 给出平面上4条线段,判断这4条线段是否恰好围成一个面积大于0的矩形. 输入 输入第一行是一个整数T ...
- fzu 1476 矩形个数
注意点:精度 #include<iostream> using namespace std; typedef long long ll; int main() { int a,b; ll ...
- 山东多校联合模拟赛 Day1
矩形计数(rect) Description 给出圆周上的 \(N\) 个点,请你计算出以这些点中的任意四个为四个角,能构成多少个矩 形. 点的坐标是这样描述的,给定一个数组 \(v[1..N]\), ...
- hihocoder #1178 : 计数 暴力
#1178 : 计数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://hihocoder.com/problemset/problem/1178 ...
随机推荐
- Mahout算法调用展示平台2.1
软件版本号: windows7: Tomcat7.JDK7.Spring4.0.2.Struts2.3.Hibernate4.3.myeclipse10.0.easyui:Linux(centos6. ...
- UI设计--->全心全意为人民服务的宗旨---->注重客户体验--->软件持久的生命力
UI即User Interface(用户界面)的简称. UI设计是指对软件的人机交互.操作逻辑.界面美观的总体设计. 好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适简单.自由.充分 ...
- Java8新特性之Optional
空指针异常一直是困扰Java程序员的问题,也是我们必须要考虑的.当业务代码中充满了if else判断null 的时候程序变得不再优雅,在Java8中提供了Optional类为我们解决NullPoint ...
- 442C
贪心 感觉思路很奥妙 首先我们把那些比两边小的数删掉,因为不删的话两边的数就会选这个数,这样就成了先上升后下降的序列,很明显除了第一第二大的数都能选,然后统计就好了. #include<bits ...
- PCB MS SQL 排序应用(row_number rank dense_rank NTILE PARTITION)
一.排序前,准备数据 --表变量 ),流程数 int) insert into @table union all union all union all union all --查看一下 select ...
- C# 取两位小数
double s=0.55555;result=s.ToString("#0.00");//点后面几个0就保留几位 如果要四舍五入的话,用这个double dbdata = 0.5 ...
- ubuntu 软件桌面图标创建
sublime text 的安装目录是:/usr/local/sublimetext $cd 桌面 $vim Sublime\ Text.desktop 添加如下内容: [Desktop Entry] ...
- Mysql数据库系列
详情点击 MySQL基础 Mysql表操作 Mysql插入 更新 删除 查询操作 Mysql创建用户和授权 基本的Mysql语句 Mysql库的操作 Mysql表的操作 Mysql数据类型(一) My ...
- C# 多线程系列(二)
传递数据给一个线程 通过函数或lambda表达式包一层进行传递. static void Main(string[] args) { Thread thread = new Thread(() =&g ...
- 安装pywinauto的步骤
team准备搞自动化测试(桌面WPF系统),这几天一直在找自动化测试工具.发现了pywinauto这款工具,许多网友反应很好用,于是下载下来试用.不得不说遇到的坑真不少,记录下来以备不时之需. 前段时 ...