Codeforces Round #587 C. White Sheet(思维+计算几何)
•题意
先给一个白矩阵,再两个黑矩阵
如果两个黑矩阵能把白矩阵包含,则输出NO
否则输出YES
•思路
计算几何题还是思维题呢?
想起了上初中高中做几何求面积的题
这个就类似于那样
包含的话分两种情况讨论,其他的不包含
①白矩形在一个黑矩形内部
这种情况直接判断边界就可以
②白矩形在两个黑矩形组合的图形内部
- 首先这个情况的前提是两个黑矩形必须能连接起来
- 白矩形和两个黑矩形分别会有重合,重合的地方可能会在此重合,
例如 白矩形(1 1 4 2) 黑1矩形(1 0 3 4) 黑2矩形(2 0 5 3)
被黑1黑2矩阵联合包含,与黑1相交面积是粉色区域,与黑2相交面积是绿色区域
但是粉绿色区域的多算的,白矩阵面积=粉色面积+绿色面积-粉绿面积
•代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct node
{
ll xl,yl,x2,y2;
}a[],p; bool CH(node x,node y )//重合
{
if(x.xl>=y.xl&&x.x2<=y.x2&&x.yl>=y.yl&&x.y2<=y.y2)
return true;
return false;
}
ll XJ(node a,node b)//相交
{
ll cx1=max(a.xl,b.xl);
ll cy1=max(a.yl,b.yl);
ll cx2=min(a.x2,b.x2);
ll cy2=min(a.y2,b.y2);
if(cx1>cx2||cy1>cy2)//不相交 p=node{cx1,cy1,cx2,cy2};//相交矩形
return (cx2-cx1)*(cy2-cy1);//相交面积
} ///包括NO 不包括YES
int main()
{
for(ll i=;i<=;i++)
cin>>a[i].xl>>a[i].yl>>a[i].x2>>a[i].y2; if(CH(a[],a[])||CH(a[],a[]))///重合在内部
{
puts("NO");
return ;
} if(XJ(a[],a[])<) ///2 3不相交
{
puts("YES");
return ;
} if(XJ(a[],a[])>=) ///2 3相交
{
ll s1=XJ(a[],a[]);
node p1=p;
ll s2=XJ(a[],a[]);
node p2=p;
ll s=(a[].y2-a[].yl)*(a[].x2-a[].xl);
s+=max(1ll*,XJ(p1,p2));///重合处会多算 if(s1+s2==s)
{
puts("NO");
return ;
}
else
{
puts("YES");
return ;
}
}
} /**
1 1 4 2
1 0 3 4
2 0 5 3
*/
Codeforces Round #587 C. White Sheet(思维+计算几何)的更多相关文章
- Codeforces Round #587 (Div. 3) C. White Sheet
链接: https://codeforces.com/contest/1216/problem/C 题意: There is a white sheet of paper lying on a rec ...
- Codeforces Round #587
题目链接:Round #587 题目答案:官方Editorial.My Solution A. Prefixes 题意:给一字符串,只含有'a'或'b',需要改变某些位置('a'变'b'或'b'变'a ...
- Codeforces Round #587 (Div. 3)
https://codeforces.com/contest/1216/problem/A A. Prefixes 题意大概就是每个偶数位置前面的ab数目要相等,很水,被自己坑了 1是没看见要输出修改 ...
- Codeforces Round #587 (Div. 3) C题 【判断两个矩形是否完全覆盖一个矩形问题】 {补题 [差点上分系列]}
C. White Sheet There is a white sheet of paper lying on a rectangle table. The sheet is a rectangle ...
- Educational Codeforces Round 40 C. Matrix Walk( 思维)
Educational Codeforces Round 40 (Rated for Div. 2) C. Matrix Walk time limit per test 1 second memor ...
- 【CF1256】Codeforces Round #598 (Div. 3) 【思维+贪心+DP】
https://codeforces.com/contest/1256 A:Payment Without Change[思维] 题意:给你a个价值n的物品和b个价值1的物品,问是否存在取物方案使得价 ...
- Codeforces Round #143 (Div. 2) (ABCD 思维场)
题目连链接:http://codeforces.com/contest/231 A. Team time limit per test:2 seconds memory limit per test: ...
- Codeforces Round #395 (Div. 2)(A.思维,B,水)
A. Taymyr is calling you time limit per test:1 second memory limit per test:256 megabytes input:stan ...
- Codeforces Round #416 (Div. 2)(A,思维题,暴力,B,思维题,暴力)
A. Vladik and Courtesy time limit per test:2 seconds memory limit per test:256 megabytes input:stand ...
随机推荐
- QT_OPENGL-------- 5.model
在qt中实现opengl obj模型导入: main.cpp #include<GL/glew.h> #include <GLFW/glfw3.h> #include<s ...
- Codeforces Round #323 (Div. 2) Once Again... CodeForces - 582B 最长非下降子序列【dp】(不明白)
B. Once Again... time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- 2019-10-23-WPF-使用-SharpDx-渲染博客导航
title author date CreateTime categories WPF 使用 SharpDx 渲染博客导航 lindexi 2019-10-23 21:10:13 +0800 2019 ...
- 微信小程序 mode 的几种模式
mode="aspectFill" mode 有效值: mode 有 13 种模式,其中 4 种是缩放模式,9 种是裁剪模式. 模式 值 说明缩放 scaleToFill 不保持纵 ...
- Mac 安装homebrew,pkgutil --pkgs列出安装包
Mac 安装homebrew Homebrew官网 http://brew.sh/index_zh-cn.html Homebrew是神马 Linux系统有个让人蛋疼的通病,软件包依赖,好在当前主流的 ...
- 光程科技IOS签名配置
光程科技IOS签名配置,APICloudAPP签名时config配置必须加上: <preference name="appCertificateVerify" value=& ...
- 20190527-JavaScriptの打怪升级旅行 { 语句 [ 声明 ,变量 ] }
写在前面的乱七八糟:时间总是轻易地溜走,不留一丝念想,近一个月,倒是过得有点丧,从今天开始起,已经开始接触后台了,而JavaScript也只是大致有了个分类框架,那些细枝末节还有的补,任重道远,天将降 ...
- Android Studio(三):设置Android Studio编码
Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...
- adam调参
微调 #阿尔法 "learning_rate": 3e-5, #学习率衰减 "weight_decay": 0.1,// "weight_decay& ...
- supersockets多个 listener
你可以增加一个子节点 "listeners" 用于添加多对监听 ip/port: <superSocket> <servers> <server na ...