洛谷P1884 [USACO12FEB]Overplanting S (矩形切割)
一种矩形切割的做法:
1 #include<bits/stdc++.h>
2 using namespace std;
3 typedef long long LL;
4 const int maxn=1005;
5 struct node{//矩形的结构体
6 LL x1,y1,x2,y2;
7 }a[maxn];
8 int n,cnt=0;
9
10 void Cut(LL id,LL x1,LL y1,LL x2,LL y2){//矩形切割
11 LL k1,k2,k3,k4;
12 k1=max(a[id].x1,x1);
13 k2=min(a[id].x2,x2);
14 k3=min(a[id].y1,y1);
15 k4=max(a[id].y2,y2);
16 if(a[id].x1<k1) a[++cnt]=(node){a[id].x1,a[id].y1,k1,a[id].y2};
17 if(a[id].x2>k2) a[++cnt]=(node){k2,a[id].y1,a[id].x2,a[id].y2};
18 if(a[id].y1>k3) a[++cnt]=(node){k1,a[id].y1,k2,k3};
19 if(a[id].y2<k4) a[++cnt]=(node){k1,k4,k2,a[id].y2};
20 }
21
22 int read(){
23 int x=0,f=1;
24 char c=getchar();
25 while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}
26 while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
27 return x*f;
28 }
29
30 int main(){
31 n=read();
32 LL x1,y1,x2,y2;
33 x1=read();y1=read();x2=read();y2=read();
34 a[++cnt]=(node){x1,y1,x2,y2};//先加入一个矩形
35 for(int i=2;i<=n;i++){
36 x1=read();y1=read();x2=read();y2=read();
37 for(int j=1;j<=cnt;j++){
38 if(a[j].x1>=x2||a[j].x2<=x1||a[j].y1<=y2||a[j].y2>=y1)continue;
39 Cut(j,x1,y1,x2,y2);//若相交,用当前矩形去切割
40 a[j--]=a[cnt--];//删除原矩形,用最后一个矩形来覆盖它
41 }
42 a[++cnt]=(node){x1,y1,x2,y2};//加入新矩形
43 }
44 LL ans=0;
45 for(int i=1;i<=cnt;i++)
46 ans+=(a[i].x2-a[i].x1)*(a[i].y1-a[i].y2);
47 cout<<ans;
48 }
好像更普遍的解法是扫描线+线段树,这里先留一个坑,以后再来补上这种做法。
洛谷P1884 [USACO12FEB]Overplanting S (矩形切割)的更多相关文章
- 洛谷P3045 [USACO12FEB]牛券Cow Coupons
P3045 [USACO12FEB]牛券Cow Coupons 71通过 248提交 题目提供者洛谷OnlineJudge 标签USACO2012云端 难度提高+/省选- 时空限制1s / 128MB ...
- 洛谷 P3048 [USACO12FEB]牛的IDCow IDs
题目描述 Being a secret computer geek, Farmer John labels all of his cows with binary numbers. However, ...
- 洛谷P3048 [USACO12FEB]牛的IDCow IDs
P3048 [USACO12FEB]牛的IDCow IDs 12通过 67提交 题目提供者lin_toto 标签USACO2012 难度普及/提高- 时空限制1s / 128MB 提交 讨论 题解 ...
- 【洛谷 P3187】 [HNOI2007]最小矩形覆盖 (二维凸包,旋转卡壳)
题目链接 嗯,毒瘤题. 首先有一个结论,就是最小矩形一定有条边和凸包重合.脑补一下就好了. 然后枚举凸包的边,用旋转卡壳维护上顶点.左端点.右端点就好了. 上顶点用叉积,叉积越大三角形面积越大,对应的 ...
- 洛谷P3047 [USACO12FEB]Nearby Cows(树形dp)
P3047 [USACO12FEB]附近的牛Nearby Cows 题目描述 Farmer John has noticed that his cows often move between near ...
- 洛谷 P3047 [USACO12FEB]附近的牛Nearby Cows
P3047 [USACO12FEB]附近的牛Nearby Cows 题目描述 Farmer John has noticed that his cows often move between near ...
- [洛谷P4388] 付公主的矩形
18.09.09模拟赛T1. 一道数学题. 题目传送门 首先把对角线当成是某个点的移动轨迹,从左下到右上. 那么这个点每上升一个单位长度,就穿过一个格子. 每右移一个单位长度,也会穿过一个格子. 例外 ...
- 洛谷 P3187 BZOJ 1185 [HNOI2007]最小矩形覆盖 (旋转卡壳)
题目链接: 洛谷 P3187 [HNOI2007]最小矩形覆盖 BZOJ 1185: [HNOI2007]最小矩形覆盖 Description 给定一些点的坐标,要求求能够覆盖所有点的最小面积的矩形, ...
- 洛谷P2241-统计方形-矩形内计算长方形和正方形的数量
洛谷P2241-统计方形 题目描述: 有一个 \(n \times m\) 方格的棋盘,求其方格包含多少正方形.长方形(不包含正方形). 思路: 所有方形的个数=正方形的个数+长方形的个数.对于任意一 ...
随机推荐
- websocket、socket、http对比
简介 在之前的理解中,讲述了socket.websocket等相关的理解,本文就socket.websocket.http理解一下其对应的联系和区别. HTTP 协议 http 为短连接:客户端发送请 ...
- 使用Python3.7+Tornado5.1配合七牛云存储api来异步切分上传文件
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_123 之前写了几篇关于FastDfs分布式存储的文章:python3.7.3操作FastDfs来进行文件操作,其实市面上关于云存储 ...
- Python数据分析--Numpy常用函数介绍(9)-- 与线性代数有关的模块linalg
numpy.linalg 模块包含线性代数的函数.使用这个模块,可以计算逆矩阵.求特征值.解线性方程组以及求解行列式等.一.计算逆矩阵 线性代数中,矩阵A与其逆矩阵A ^(-1)相乘后会得到一个单位矩 ...
- Modbus转Profinet网关案例 | 三菱FR-A700系列变频器配置方法
本案例是利用小疆智控Modbus转Profinet网关GW-PN5001把三菱FR-A700变频器接入到西门子1200PLC.实现Profinet转Modbus的通讯协议的互转. 用到设备有:三菱FR ...
- 【达人专栏】还不会用Apache Dolphinscheduler吗,大佬用时一个月写出的最全入门教学【二】
02 Master启动流程 2.1 MasterServer的启动 在正式开始前,笔者想先鼓励一下大家.我们知道启动Master其实就是启动MasterServer,本质上与其他SpringBoot项 ...
- 在生鲜零售业,DolphinScheduler 还能这么玩!
点击上方 蓝字关注我们 ✎ 编 者 按 2021 年,Apache DolphinScheduler 社区又迎来了新的蓬勃发展,社区活跃度持续提高.目前,项目 GitHub Star 已达 6.7k, ...
- ABC206 F - Interval Game 2 (区间DP,博弈论,SG函数)
题面 题意很简单 A l i c e \tt Alice Alice 和 B o b \tt Bob Bob 在博弈.摆在他们面前有 N \rm N N 个区间 [ l i , r i ) \rm[l ...
- 漂亮简洁的PHP导航源码-蘑菇导航
蘑菇导航 蘑菇导航是根据SimpleWebNavigation修改而来的一个php网址导航.支持php8,支持左侧锚点,支持自定义fontawesome图标. 可以作为群组导航.图床导航.vps导航等 ...
- 【IDEA】IDEA怎么汉化&汉化后怎么转回英文
① 英文转中文 1.点击左上角的File,然后选择Setting 2.达到Setting页面选择Plugins 3.在搜索框搜索chinese,选择中文语言包下载 4.找到下载插件,选择勾选上,然后o ...
- django_day07
django_day07 django form组件 form组件的定义 class RegForm(forms.Form): user = forms.CharField(label='用户名') ...