千里白金雪满天 烽火江山起狼烟 分手竟兵刃相见

1941.7.

苏联军队出乎意料的反抗力量、前线德军的补给困难 —— 元首 Adolf 望着天空的云层陷入沉思……

在 xyxyxy-直角坐标平面的天空中,有 nnn 片四边平行于坐标轴的矩形云朵。每一片云由一个五元组 (xi,yi,wi,hi,di)(x_i, y_i, w_i, h_i, d_i)(x​i​​,y​i​​,w​i​​,h​i​​,d​i​​) 表示,其中 (xi,yi)(x_i, y_i)(x​i​​,y​i​​) 为云左下角顶点的坐标,wiw_iw​i​​ 表示云在 xxx 轴方向的宽度,hih_ih​i​​ 表示云在 yyy 轴方向的长度,di∈{0,1}d_i \in \{0, 1\}d​i​​∈{0,1} 为云的移动方向(000 为横向,111 为纵向)。具体来说,满足 di=0d_i = 0d​i​​=0 的云沿 xxx 轴正方向以每秒 111 长度单位的速率不断移动,而满足 di=1d_i = 1d​i​​=1 的云沿 yyy 轴正方向以每秒 111 长度单位的速率不断移动。

元首发现,所有的云在此时没有重叠的面积。他将这个时刻记作时刻 000。他想知道,对于 (−∞,+∞)(-\infty, +\infty)(−∞,+∞) 中的任意时刻和平面上的任意一个点,最多可以同时被多少片云覆盖。一个点在某时刻被一朵云覆盖当且仅当这个点位于该时刻云朵所处矩形的内部(不含边界)。

你需要编写程序帮助元首满足他的好奇心。

输入格式

从标准输入读入数据。

输入的第一行包含一个正整数 TTT —— 数据的组数。接下来包含 TTT 组数据,格式如下,数据间没有空行。

  • 第 111 行:一个正整数 nnn —— 云朵的数量。
  • 接下来 nnn 行:每行五个空格分隔的整数 xix_ix​i​​、yiy_iy​i​​、wiw_iw​i​​、hih_ih​i​​ 和 did_id​i​​ —— 描述一朵云在时刻 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×10​8​​≤x​i​​,y​i​​≤−5×10​8​​,1≤wi,hi≤−5×1081 \leq w_i, h_i \leq -5 \times 10^81≤w​i​​,h​i​​≤−5×10​8​​,di∈{0,1}d_i \in \{0, 1\}d​i​​∈{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≤x​i​​,y​i​​≤50,1≤wi,hi≤501 \leq w_i, h_i \leq 501≤w​i​​,h​i​​≤50
4 ≤50\leq 50≤50
5 ≤100\leq 100≤100 wi=hi=1w_i = h_i = 1w​i​​=h​i​​=1
6 ≤1000\leq 1000≤1000 −103≤xi,yi≤103-10^{3} \leq x_i, y_i \leq 10^{3}−10​3​​≤x​i​​,y​i​​≤10​3​​,1≤wi,hi≤1031 \leq w_i, h_i \leq 10^{3}1≤w​i​​,h​i​​≤10​3​​
7
8 wi=hi=1w_i = h_i = 1w​i​​=h​i​​=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
感谢腾讯公司对此次比赛的支持。

 
 
 
 
题意:N个矩形的云,分两种,一种沿x轴正方向移动,一种沿y轴正方向移动,速度都为1 
t=0时刻没有矩形相交,问在某个时间点最多有多少朵云重合(考虑 t 为负的情况)
 
 
 
分析:
思考可得,最多有两朵云相交,那么答案就只能是1或2
 
问题转化为判断会不会有两朵云在某个时刻相交
 
 
 
给出如下推导
 
 
问题最终转化为判断最后一行的式子是否对于每对移动方向不同的矩形都成立
其实就是N个区间是否有相交的两个区间。
可以二分,可以BIT,我用了set
 /*
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 白金元首与克劳德斯的更多相关文章

  1. 【LibreOJ】#6299. 「CodePlus 2018 3 月赛」白金元首与克劳德斯

    [题意]给出坐标系中n个矩形,类型1的矩形每单位时间向x轴正方向移动1个单位,类型2的矩形向y轴正方向,初始矩形不重叠,一个点被矩形覆盖当且仅当它在矩形内部(不含边界),求$(-\infty ,+\i ...

  2. 「CodePlus 2018 3 月赛」白金元首与克劳德斯

    所有的云在此时没有重叠的面积 所有的云在此时没有重叠的面积 所有的云在此时没有重叠的面积 所有的云在此时没有重叠的面积 所有的云在此时没有重叠的面积 所有的云在此时没有重叠的面积 所有的云在此时没有重 ...

  3. [NOIP2019模拟赛]LuoguP4261白金元首与克劳德斯

    题目描述 给出坐标系中n个矩形,类型1的矩形每单位时间向x轴正方向移动1个单位,类型2的矩形向y轴正方向,初始矩形不重叠,一个点被矩形覆盖当且仅当它在矩形内部(不含边界),求$(-\infty ,+\ ...

  4. [LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞

    [LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞 试题描述 到河北省 见斯大林 / 在月光下 你的背影 / 让我们一起跳舞吧 うそだよ~ 河北省怎么可能有 Stalin. ...

  5. 「CodePlus 2017 12 月赛」白金元首与独舞

    description 题面 data range \[ 1 \leq T \leq 10, 1 \leq n, m \leq 200 , 0 \leq k \leq \min(nm, 300)\] ...

  6. 【LibreOJ】#6259. 「CodePlus 2017 12 月赛」白金元首与独舞

    [题目]给定n行m列的矩阵,每个位置有一个指示方向(上下左右)或没有指示方向(任意选择),要求给未定格(没有指示方向的位置)确定方向,使得从任意一个开始走都可以都出矩阵,求方案数.n,m<=20 ...

  7. 「CodePlus 2018 3 月赛」白金元首与莫斯科

    $n \leq 17,m \leq 17$,$n*m$的01矩形,对每一个0问:当他单独变成1之后,在其他0处放多米诺牌(不一定放满,可以不放)的方案数.膜$1e9+7$. 直接$dp$是$n^42^ ...

  8. 走进矩阵树定理--「CodePlus 2017 12 月赛」白金元首与独舞

    n,m<=200,n*m的方阵,有ULRD表示在这个格子时下一步要走到哪里,有一些待决策的格子用.表示,可以填ULRD任意一个,问有多少种填法使得从每个格子出发都能走出这个方阵,答案取模.保证未 ...

  9. loj6259「CodePlus 2017 12 月赛」白金元首与独舞

    分析 我们将没连的点连向周围四个点 其余的按照给定的方向连 我们将所有连出去的位置统一连到0点上 再以0作为树根 于是就将问题转化为了有向图内向树计数 代码 #include<iostream& ...

随机推荐

  1. 01C++编辑编译运行环境

    C++编辑编译运行环境 Bloodshed Dev-C++ Microsoft Visual Studio

  2. 03JavaScript运算符与表达式

    JavaScript运算符与表达式 2.5运算符与表达式 2.5.1赋值运算符 运算符 意义 运算符 意义 = x=5 /= x=x/y += x=x+y %= 求余赋值 -= x=x-y *= x= ...

  3. contab的使用方法

    linux 系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另 外, 由于使用者自己也可以设置计划任务,所以, ...

  4. Queueingconsumer 找不到

    springboot从1.5.9升级到2.0.0,queueingconsumer报错没有这个类,改为使用 DefaultConsumer

  5. NOIP 2006 金明的预算方案(洛谷P1064,动态规划递推,01背包变形,滚动数组)

    一.题目链接:P1064 金明的预算方案 二.思路 1.一共只有五种情况 @1.不买 @2.只买主件 @3.买主件和附件1(如果不存在附件也要运算,只是这时附件的数据是0,也就是算了对标准的结果也没影 ...

  6. 洛谷——P1475 控制公司 Controlling Companies

    P1475 控制公司 Controlling Companies 题目描述 有些公司是其他公司的部分拥有者,因为他们获得了其他公司发行的股票的一部分.(此处略去一句废话)据说,如果至少满足了以下三个条 ...

  7. linux less-分屏上下翻页浏览文件内容

    博主推荐:获取更多 linux文件内容查看命令 收藏:linux命令大全 less命令的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more ...

  8. python正则表达式的好文章(转)

    http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html https://blog.csdn.net/shw800/article/det ...

  9. [Usaco2016 Open]Diamond Collector

    题目描述 Bessie the cow, always a fan of shiny objects, has taken up a hobby of mining diamonds in her s ...

  10. Win32编程API 基础篇 -- 6.菜单和图标

    菜单和按钮 例子:菜单1 本小节仅仅向你展示如果向你的窗口中加入一个基本的菜单,通常你会用到一个提前制作好的菜单资源,这会是一份.rc文件并且会被编译链接进你的.exe可执行程序中.这是具体的流程做法 ...