Codeforces Round #524 (Div. 2) C. Masha and two friends 几何:判断矩形是否相交以及相交矩形坐标
题意 :给出一个初始的黑白相间的棋盘 有两个人 第一个人先用白色染一块矩形区域
第二个人再用黑色染一块矩形区域 问最后黑白格子各有多少个
思路:这题的关键在于求相交的矩形区间
给出一个矩形的左下和右上角 则相交的条件为 max(X1,X3)<=min(X2,X4)&&max(Y1,Y3)<=min(Y2,Y4) 这里可以用线和线有公共区间的条件来推 矩形就是两个线
还有就是如果相交则求 相交的矩形的 左下和右上的坐标 ll xa=max(X1,X3),ya=max(Y1,Y3),xb=min(X4,X2),yb=min(Y2,Y4);
然后就是简单的容斥正常做就行了
#include<bits/stdc++.h>
#define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;i++)
#define MS(arr,arr_value) memset(arr,arr_value,sizeof(arr))
#define F first
#define S second
#define pii pair<int ,int >
#define mkp make_pair
#define pb push_back
#define arr(zzz) array<ll,zzz>
using namespace std;
#define ll long long
#define int long long
const int maxn=3e5+;
const int inf=0x3f3f3f3f;
ll count(int x1,int y1,int x2,int y2,int o){//return black
ll n=x2-x1+;
ll m=y2-y1+;
ll white=,black=;
if(n&){
if(m&){
white=(n+)/+1ll*(n/+(n+)/)*(m/);
black=1ll*m*n-white;
}
else {
white=black=1ll*n*m/;
}
}
else {
white=black=1ll*n*m/;
}
if(o==){
return white;
}
else return black; }
void exchange(ll &x,ll&y){
ll tmp=x;
x=y;
y=tmp;
}
int32_t main(){
int t;
scanf("%lld",&t);
int n,m;
while(t--){
ll black=,white=;
int X1,Y1,X2,Y2,X3,Y3,X4,Y4;
scanf("%lld%lld",&n,&m);
scanf("%lld%lld%lld%lld%lld%lld%lld%lld",&X1,&Y1,&X2,&Y2,&X3,&Y3,&X4,&Y4);
if(n&){
if(m&){
white=(n+)/+ (n/+(n+)/)*(m/);
black=1ll*m*n-white;
}
else {
white=black=1ll*n*m/;
}
}
else {
white=black=1ll*n*m/;
}
ll tmp1=count(X1,Y1,X2,Y2,(X1+Y1)%==);
white-=1ll*(X2-X1+)*(Y2-Y1+)-tmp1;
white+=1ll*(X2-X1+)*(Y2-Y1+);
black-=tmp1;
ll tmp2=count(X3,Y3,X4,Y4,(X3+Y3)%==);
white-=1ll*(X4-X3+)*(Y4-Y3+)-tmp2;
black-=tmp2;
black+=1ll*(X4-X3+)*(Y4-Y3+);
/*if(X1<=X3){
exchange(X1,X3);
exchange(X2,X4);
exchange(Y1,Y3);
exchange(Y2,Y4);
}
if(){ }*/
ll minx=min(X1,X3);
ll miny=min(Y1,Y3);
if(max(X1,X3)<=min(X2,X4)&&max(Y1,Y3)<=min(Y2,Y4)){
ll xa=max(X1,X3),ya=max(Y1,Y3),xb=min(X4,X2),yb=min(Y2,Y4);
ll tmp=count(xa,ya,xb,yb,(xa+ya)%==);
//cout<<xa<<" "<<ya<<" "<<xb<<""<<yb<<" fuck"<<tmp<<endl;
black+=tmp;
white-=1ll*(xb-xa+)*(ya-yb+);
white+=1ll*(xb-xa+)*(ya-yb+)-tmp; }
cout<<white<<" "<<black<<endl;
} return ;
}
Codeforces Round #524 (Div. 2) C. Masha and two friends 几何:判断矩形是否相交以及相交矩形坐标的更多相关文章
- 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)(前三题题解)
这场比赛手速场+数学场,像我这样读题都读不大懂的蒟蒻表示呵呵呵. 第四题搞了半天,大概想出来了,但来不及(中途家里网炸了)查错,于是我交了两次丢了100分.幸亏这次没有掉rating. 比赛传送门:h ...
- Codeforces Round #524 (Div. 2) Masha and two friends矩形
题目 题意: 给一个n*m块大的黑白相间的矩形,在这个举行中操作,要先把第一个矩形(左下角坐标(x1,y2),右上角坐标(x2,y2)) 全部涂成白色,再把第二个矩形(左下角坐标(x3,y3), ...
- 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 ...
随机推荐
- JS之BOM、DOM
一.BOM对象 1,window对象 所有浏览器都支持window对象,从概念上讲:一个HTML文档对应一个window对象,从功能上讲:控制浏览器窗口的,从使用上讲:window对象不需要创建对象, ...
- Jquery的ID选择器
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></scri ...
- 【操作系统】二、JVM线程与Linux内核线程的映射
Linux从内核2.6开始使用NPTL (Native POSIX Thread Library)支持,但这时线程本质上还轻量级进程. Java里的线程是由JVM来管理的,它如何对应到操作系统的线程是 ...
- jQuery性能优化的一些参考建议
JQ3.1 文档下载地址:https://pan.baidu.com/s/1c2vMQdy 一.注意定义jQuery变量的时候添加var关键字 这个不仅仅是JQ,在JS中都是必须的 二.如果有多个变量 ...
- fullScreen.html
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- vue点击元素变色兄弟元素不变色
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- loj#2002. 「SDOI2017」序列计数(dp 矩阵乘法)
题意 题目链接 Sol 质数的限制并没有什么卵用,直接容斥一下:答案 = 忽略质数总的方案 - 没有质数的方案 那么直接dp,设\(f[i][j]\)表示到第i个位置,当前和为j的方案数 \(f[i ...
- 【代码笔记】Web-HTML-CSS
一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- Jenkins 解决Jenkins下java无法运行slave-agent jnlp程序连接Windows Slave主机
解决Jenkins下java无法运行slave-agent jnlp程序连接Windows Slave主机 by:授客 QQ:1033553122 测试环境 java下载地址:http://www ...
- 转 fiddler常见的应用场景
fiddler常见的应用场景 在移动互联网时代,作为软件测试工程师,fiddler绝对是值得掌握并添加进技术栈里的工具之一. 那么,fiddler在日常的测试工作中,一般都有哪些常见的应用场景呢? ...