code+3月赛 loj6299 白金元首与克劳德斯
千里白金雪满天 烽火江山起狼烟 分手竟兵刃相见
1941.7.
苏联军队出乎意料的反抗力量、前线德军的补给困难 —— 元首 Adolf 望着天空的云层陷入沉思……
在 xyxyxy-直角坐标平面的天空中,有 nnn 片四边平行于坐标轴的矩形云朵。每一片云由一个五元组 (xi,yi,wi,hi,di)(x_i, y_i, w_i, h_i, d_i)(xi,yi,wi,hi,di) 表示,其中 (xi,yi)(x_i, y_i)(xi,yi) 为云左下角顶点的坐标,wiw_iwi 表示云在 xxx 轴方向的宽度,hih_ihi 表示云在 yyy 轴方向的长度,di∈{0,1}d_i \in \{0, 1\}di∈{0,1} 为云的移动方向(000 为横向,111 为纵向)。具体来说,满足 di=0d_i = 0di=0 的云沿 xxx 轴正方向以每秒 111 长度单位的速率不断移动,而满足 di=1d_i = 1di=1 的云沿 yyy 轴正方向以每秒 111 长度单位的速率不断移动。
元首发现,所有的云在此时没有重叠的面积。他将这个时刻记作时刻 000。他想知道,对于 (−∞,+∞)(-\infty, +\infty)(−∞,+∞) 中的任意时刻和平面上的任意一个点,最多可以同时被多少片云覆盖。一个点在某时刻被一朵云覆盖当且仅当这个点位于该时刻云朵所处矩形的内部(不含边界)。
你需要编写程序帮助元首满足他的好奇心。
输入格式
从标准输入读入数据。
输入的第一行包含一个正整数 TTT —— 数据的组数。接下来包含 TTT 组数据,格式如下,数据间没有空行。
- 第 111 行:一个正整数 nnn —— 云朵的数量。
- 接下来 nnn 行:每行五个空格分隔的整数 xix_ixi、yiy_iyi、wiw_iwi、hih_ihi 和 did_idi —— 描述一朵云在时刻 000 的状态。
输出格式
输出到标准输出。
对于每组数据输出一行 —— 在任意时刻,覆盖平面上任意一个点的云朵数目的最大值。
样例
样例输入
3
1
0 0 1 1 0
3
0 -10 10 10 1
10 0 10 10 1
-10 0 10 10 0
3
0 10 10 10 1
10 20 10 10 1
10 0 10 10 0
样例输出
1
2
2
第 111 组数据中,任意时刻的任意一个点至多被惟一的一片云覆盖。
第 222 组数据中,下图从左至右分别示意时刻 000、时刻 444、时刻 111111 的情形。

第 333 组数据中,时刻 000 对应第 222 组数据时刻 202020 的情形。在该组数据中,(−20,0)(-20, 0)(−20,0) 内的时刻均有 222 片云覆盖同一个点。请注意考察范围 (−∞,+∞)(-\infty, +\infty)(−∞,+∞) 包含时刻 000 之前的时间段。
数据范围与提示
子任务
对于所有数据,有 1≤T≤151 \leq T \leq 151≤T≤15,−5×108≤xi,yi≤−5×108-5 \times 10^8 \leq x_i, y_i \leq -5 \times 10^8−5×108≤xi,yi≤−5×108,1≤wi,hi≤−5×1081 \leq w_i, h_i \leq -5 \times 10^81≤wi,hi≤−5×108,di∈{0,1}d_i \in \{0, 1\}di∈{0,1}。
| 测试点编号 | nnn | 特殊约定 |
|---|---|---|
| 1 | ≤1\leq 1≤1 | 无 |
| 2 | ≤2\leq 2≤2 | |
| 3 | ≤10\leq 10≤10 | −50≤xi,yi≤50-50 \leq x_i, y_i \leq 50−50≤xi,yi≤50,1≤wi,hi≤501 \leq w_i, h_i \leq 501≤wi,hi≤50 |
| 4 | ≤50\leq 50≤50 | |
| 5 | ≤100\leq 100≤100 | wi=hi=1w_i = h_i = 1wi=hi=1 |
| 6 | ≤1000\leq 1000≤1000 | −103≤xi,yi≤103-10^{3} \leq x_i, y_i \leq 10^{3}−103≤xi,yi≤103,1≤wi,hi≤1031 \leq w_i, h_i \leq 10^{3}1≤wi,hi≤103 |
| 7 | ||
| 8 | wi=hi=1w_i = h_i = 1wi=hi=1 | |
| 9 | ≤100000\leq 100000≤100000 | |
| 10 | 无 |
“Dann soll die Armee eben kehrt machen!”
题面与史实无关。
提示
最大输入约为 50 MiB,请注意程序在读入上的耗时哦。
来自 CodePlus 2017 3 月赛,清华大学计算机科学与技术系学生算法与竞赛协会 荣誉出品。
Credit:idea/吕时清 命题/吕时清 验题/丁子钧
Git Repo:https://git.thusaac.org/publish/CodePlus3
感谢腾讯公司对此次比赛的支持。

/*
Welcome Hacking
Wish You High Rating
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<ctime>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<string>
#include<set>
using namespace std;
int read(){
int xx=,ff=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')ff=-;ch=getchar();}
while(ch>=''&&ch<=''){xx=xx*+ch-'';ch=getchar();}
return xx*ff;
}
int T,N;
struct cloud_{
int x,y,w,h,d;
bool friend operator<(const cloud_&A,const cloud_&B)
{return A.x+A.y<B.x+B.y;}
}C[];
set<cloud_>s;
int calc(){
s.clear();
for(int i=;i<=N;i++)
if(!C[i].d)
s.insert(C[i]);
for(int i=;i<=N;i++)
if(C[i].d){
set<cloud_>::iterator j=s.lower_bound(C[i]);
if(j!=s.end())
if(C[i].x+C[i].y+C[i].w+C[i].h>j->x+j->y)
return ;
}
//两种相交的情况都要判断
s.clear();
for(int i=;i<=N;i++)
if(C[i].d)
s.insert(C[i]);
for(int i=;i<=N;i++)
if(!C[i].d){
set<cloud_>::iterator j=s.lower_bound(C[i]);
if(j!=s.end())
if(C[i].x+C[i].y+C[i].w+C[i].h>j->x+j->y)
return ;
}
return ;
}
int main(){
//freopen("in","r",stdin);
//freopen("out","w",stdout);
for(int T=read();T;T--){
N=read();
for(int i=;i<=N;i++)
C[i].x=read(),C[i].y=read(),C[i].w=read(),C[i].h=read(),C[i].d=read();
sort(C+,C++N);
printf("%d\n",calc());
}
return ;
}
code+3月赛 loj6299 白金元首与克劳德斯的更多相关文章
- 【LibreOJ】#6299. 「CodePlus 2018 3 月赛」白金元首与克劳德斯
[题意]给出坐标系中n个矩形,类型1的矩形每单位时间向x轴正方向移动1个单位,类型2的矩形向y轴正方向,初始矩形不重叠,一个点被矩形覆盖当且仅当它在矩形内部(不含边界),求$(-\infty ,+\i ...
- 「CodePlus 2018 3 月赛」白金元首与克劳德斯
所有的云在此时没有重叠的面积 所有的云在此时没有重叠的面积 所有的云在此时没有重叠的面积 所有的云在此时没有重叠的面积 所有的云在此时没有重叠的面积 所有的云在此时没有重叠的面积 所有的云在此时没有重 ...
- [NOIP2019模拟赛]LuoguP4261白金元首与克劳德斯
题目描述 给出坐标系中n个矩形,类型1的矩形每单位时间向x轴正方向移动1个单位,类型2的矩形向y轴正方向,初始矩形不重叠,一个点被矩形覆盖当且仅当它在矩形内部(不含边界),求$(-\infty ,+\ ...
- [LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞
[LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞 试题描述 到河北省 见斯大林 / 在月光下 你的背影 / 让我们一起跳舞吧 うそだよ~ 河北省怎么可能有 Stalin. ...
- 「CodePlus 2017 12 月赛」白金元首与独舞
description 题面 data range \[ 1 \leq T \leq 10, 1 \leq n, m \leq 200 , 0 \leq k \leq \min(nm, 300)\] ...
- 【LibreOJ】#6259. 「CodePlus 2017 12 月赛」白金元首与独舞
[题目]给定n行m列的矩阵,每个位置有一个指示方向(上下左右)或没有指示方向(任意选择),要求给未定格(没有指示方向的位置)确定方向,使得从任意一个开始走都可以都出矩阵,求方案数.n,m<=20 ...
- 「CodePlus 2018 3 月赛」白金元首与莫斯科
$n \leq 17,m \leq 17$,$n*m$的01矩形,对每一个0问:当他单独变成1之后,在其他0处放多米诺牌(不一定放满,可以不放)的方案数.膜$1e9+7$. 直接$dp$是$n^42^ ...
- 走进矩阵树定理--「CodePlus 2017 12 月赛」白金元首与独舞
n,m<=200,n*m的方阵,有ULRD表示在这个格子时下一步要走到哪里,有一些待决策的格子用.表示,可以填ULRD任意一个,问有多少种填法使得从每个格子出发都能走出这个方阵,答案取模.保证未 ...
- loj6259「CodePlus 2017 12 月赛」白金元首与独舞
分析 我们将没连的点连向周围四个点 其余的按照给定的方向连 我们将所有连出去的位置统一连到0点上 再以0作为树根 于是就将问题转化为了有向图内向树计数 代码 #include<iostream& ...
随机推荐
- 梦想CAD控件COM接口文字样式
增加文字样式 用户可以增加文字样式到数据库,并设置其字体等属性,具体实现c#代码如下: private void CreateText() { MxDrawApplication app = new ...
- Calendar的用法
DAY_OF_MONTH的主要作用是cal.get(DAY_OF_MONTH),用来获得这一天在是这个月的第多少天 Calendar.DAY_OF_YEAR的主要作用是cal.get(DAY_OF_Y ...
- SAS,SATA普及文档
目前所能见到的硬盘接口类型主要有IDE.SATA.SCSI.SAS.FC等等. IDE是俗称的并口,SATA是俗称的串口,这两种硬盘是个人电脑和低端服务器常见的硬盘.SCSI是"小型计算机系 ...
- 3.2.3.7 ERE 运算符的优先级
在 ERE 里运算符的优先级和 BRE 一样.由高至低列出了 ERE 运算符的优先级. 运算符 含义 [..] [= =] [: :] 用于字符对应的方括号符号 \metachar ...
- 实验1“C语言开发环境使用和数据类型、运算符、表达式”总结与体会
一.实验结论 1.判断奇偶 // 程序功能: // 要求用户从键盘输入一个整数,判断其是奇数还是偶数 #include <stdio.h> int main() { int x; prin ...
- windows开启3306端口并用可视化工具访问远程mysql(授权访问)
开启 MySQL 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口. MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 3306 端口,否则远程是无法通过 330 ...
- dubbo 学习1
1.高性能优秀的服务框架,应用可通过高性能的RPC实现服务的输出和输入功能,可以和spring框架无缝集成. 2.主要核心部件 a.remoting 网络通信框架 实现了sync-over-asnc ...
- 武大OJ 706.Farm
Farmer John has a farm. Betsy, a famous cow, loves running in farmer John's land. The noise she made ...
- Mysql修改自增主键的起始值及查询自增主键的下一个值
MySQL [xxx_mall]> alter table shop_base_info AUTO_INCREMENT=11000;Query OK, 0 rows affected (0.0 ...
- - > 贪心基础入门讲解三——活动安排问题二
有若干个活动,第i个开始时间和结束时间是[Si,fi),活动之间不能交叠,要把活动都安排完,至少需要几个教室? 分析:能否按照之一问题的解法,每个教室安排尽可能多的活动,即按结束时间排序,再贪心选 ...