Codeforces Round #524 (Div. 2) Masha and two friends矩形
题意:
给一个n*m块大的黑白相间的矩形,在这个举行中操作,要先把第一个矩形(左下角坐标(x1,y2),右上角坐标(x2,y2)) 全部涂成白色,再把第二个矩形(左下角坐标(x3,y3),右上角坐标(x4,y4)) 全部涂成黑色。 求涂了这两个矩形之后的 白色块数量和黑色块数量。
思路:
上图。因为在第二步中全涂成黑色,可能会 覆盖第一个矩形的一部分。如果先求白色块,然后通过n*m-白色再求出黑色的方法,不太好求。所以先求黑色块数量,再通过n*m-黑色 求白色。
答案黑色块的数量设为numblack ( 即nb ),nb = n*m中总的黑色数量 - s1中的黑色数量 - s2中的黑色数量 - s3中的黑色数量 + (s2+s3)的面积, 等价于nb = n*m中总的黑色数量 - (s1+s2)中的黑色数量 - (s2+s3)中的黑色数量 + s2中的黑色数量 + (s2+s3)的面积。这样比较好求。
而求一个矩形中黑色方块的数量,容易知道不是 白==黑 ,就是 白与黑相差为1(其中矩形左下角是黑色的话,黑色的数量就会比白色多1,这也是必要条件)
xx1=max(x[1],x[3]);
xx2=min(x[2],x[4]);
yy1=max(y[1],y[3]);
yy2=min(y[2],y[4]); 如果 xx1<=xx2 && yy1<=yy2 ,则有重叠面积,s2部分存在。
#include<iostream>
#include<cstdio>
#include <cctype>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<string>
#include<cmath>
#include<set>
#include<vector>
#include<stack>
#include<queue>
#include<map>
using namespace std;
#define ll long long
#define mem(a,x) memset(a,x,sizeof(a))
#define se second
#define fi first
const ll mod=;
const int INF= 0x3f3f3f3f;
const int inf= ;
const int N=1e5+; int t,n,m;
ll x[],y[];
ll nb; ll numblack(ll x1,ll y1,ll x2,ll y2)
{
// 矩形里 黑色数量要+1的唯一情况:
if((x2-x1+)%== && (y2-y1+)%== && (x1+y1)%==)
return (x2-x1+)*(y2-y1+)/ +;
else
return (x2-x1+)*(y2-y1+)/ ;
} int main()
{
cin>>t;
while(t--)
{
scanf("%d%d",&n,&m);
for(int i=;i<=;i++)
scanf("%d%d",&x[i],&y[i]); nb = numblack(,,m,n);
nb-= numblack( x[],y[],x[],y[] );
nb-= numblack( x[],y[],x[],y[] ); ll xx1=max(x[],x[]);
ll xx2=min(x[],x[]);
ll yy1=max(y[],y[]);
ll yy2=min(y[],y[]);
if(xx1<=xx2 && yy1<=yy2) //如果重叠 加上重合部分(容斥定理)
nb+= numblack( xx1,yy1,xx2,yy2 ); nb+= (x[]-x[]+)*(y[]-y[]+);
cout<<1LL*n*m-nb<<' '<<nb<<endl;
}
}
Codeforces Round #524 (Div. 2) Masha and two friends矩形的更多相关文章
- Codeforces Round #524 (Div. 2)(前三题题解)
这场比赛手速场+数学场,像我这样读题都读不大懂的蒟蒻表示呵呵呵. 第四题搞了半天,大概想出来了,但来不及(中途家里网炸了)查错,于是我交了两次丢了100分.幸亏这次没有掉rating. 比赛传送门:h ...
- Codeforces Round #524 (Div. 2) C. Masha and two friends(矩形相交)
C. Masha and two friends time limit per test 1 second memory limit per test 256 megabytes input stan ...
- Codeforces Round #524 (Div. 2) C. Masha and two friends
C. Masha and two friends 题目链接:https://codeforc.es/contest/1080/problem/C 题意: 给出一个黑白相间的n*m的矩阵,现在先对一个子 ...
- Codeforces Round #524 (Div. 2) C. Masha and two friends(思维+计算几何?)
传送门 https://www.cnblogs.com/violet-acmer/p/10146350.html 题意: 有一块 n*m 的棋盘,初始,黑白块相间排列,且左下角为白块. 给出两个区间[ ...
- Codeforces Round #524 (Div. 2) C. Masha and two friends 几何:判断矩形是否相交以及相交矩形坐标
题意 :给出一个初始的黑白相间的棋盘 有两个人 第一个人先用白色染一块矩形区域 第二个人再用黑色染一块矩形区域 问最后黑白格子各有多少个 思路:这题的关键在于求相交的矩形区间 给出一个矩形的左下和 ...
- Codeforces Round #524 (Div. 2) C. Masha and two friends 思路
题目:题目链接 思路:直接计数显然是不好处理的,但分情况讨论只要不写错这题是一定可以出的,但这样基本做完这个题就没时间做其他题了,但当时我就这么蠢的这样做了,比赛一个半小时的时候突然发现一个似乎可行的 ...
- Codeforces Round #524 (Div. 2) F. Katya and Segments Sets(主席树)
https://codeforces.com/contest/1080/problem/F 题意 有k个区间,区间的种类有n种,有m个询问(n,m<=1e5,k<=3e5),每次询问a,b ...
- Codeforces Round #524 (Div. 2) E. Sonya and Matrix Beauty(字符串哈希,马拉车)
https://codeforces.com/contest/1080/problem/E 题意 有一个n*m(<=250)的字符矩阵,对于每个子矩阵的每一行可以任意交换字符的顺序,使得每一行每 ...
- Codeforces Round #524 (Div. 2) Solution
A. Petya and Origami Water. #include <bits/stdc++.h> using namespace std; #define ll long long ...
随机推荐
- PRECONDITION_FAILED - inequivalent arg 'type' for exchange 'exchange' in vhost '/': received 'direct
最近在搞rabbitmq,把解决问题方法记下 问题1:PRECONDITION_FAILED - inequivalent arg 'type' for exchange 'exchange' in ...
- 【转】mysql 存储过程的示例
原文地址:https://blog.csdn.net/lishaojun0115/article/details/50183661 begin #定义变量 declare local_sender v ...
- PHP正则匹配价格
/** * 匹配价格 * @param $price * @return bool */ public static function checkPrice($price) { // 不能小于0 if ...
- 计算机视觉/图像处理工具箱推荐(转自cvnote)
最近在几个地方都看到有人问C++下用什么矩阵运算库比较好,顺便做了个调查,做一些相关的推荐吧.主要针对稠密矩阵,有时间会再写一个稀疏矩阵的推荐. Armadillo:C++下的Matlab替代品 地址 ...
- Tomcat中不能通过访问自己IP,但可以通过localhost/127.0.0.1访问
一.问题如下:局域网内,自己机器部署了一个tomcat应用,在本机上可以通过如下方式访问引用. http://localhost:8080/xxxx http://127.0.0.1:8080/xx ...
- 批量删除c文件和h文件中的注释
不知道大家有没有批量删除c文件和h文件中注释的需要,说起来搞笑,偶然翻出来早先写的一份,首先楼猪不是闲的蛋疼写这东西,工作需要,哪里要砖就要搬.冷门的东西大家需要的时候也不一定好找,分享给大家,省的自 ...
- hadoop 空间配置
hadoop-------------- 分布式计算框架. common // hdfs //存储 mapreduce //MR,编程模型. yarn //资源调度. 集群部署----------- ...
- Golang安装和配置
Golang安装和配置 Linux Golang 下载源码,解压. # /home/superpika为你的主目录 mkdir /home/superpika/go mkdir /home/super ...
- 在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字)
原文:在论坛中出现的比较难的sql问题:41(循环替换 循环替换关键字) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
- WPF不同方式快捷键判断
private void Window_PreviewKeyDown(object sender, KeyEventArgs e) { //单个按键e.Key方式判断 if (e.Key == Key ...