[PA2014]Parking

题目大意:

停车场是一个宽度为\(w(w\le10^9)\)的矩形。我们以其左下角顶点为原点,坐标轴平行于矩形的边,建立直角坐标系。停车场很长,我们可以认为它一直向右边伸展到无穷远处。

总共有\(n(n\le5\times10^4)\)辆车。车都是边平行于坐标轴的矩形,大小可能不同。你可以将车在停车场内任意地平移,且不能互相重叠。

告诉你每辆车目前的位置和目标位置,求是否可以通过移动达到目标状态。

思路:

如果两辆车路线必定会相交,且两辆车宽度加起来大于\(w\),那么就不能达到目标状态。

从右到左枚举目标状态中的车,树状数组按照初始状态维护从左到右的前缀最大值即可。

源代码:

  1. #include<cstdio>
  2. #include<cctype>
  3. #include<algorithm>
  4. inline int getint() {
  5. register char ch;
  6. while(!isdigit(ch=getchar()));
  7. register int x=ch^'0';
  8. while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
  9. return x;
  10. }
  11. const int N=5e4+1;
  12. int n,w,rank[N];
  13. struct Rect {
  14. int x1,x2,w,id;
  15. void read() {
  16. int y1,y2;
  17. x1=getint();
  18. y1=getint();
  19. x2=getint();
  20. y2=getint();
  21. w=std::abs(y1-y2);
  22. if(x1>x2) std::swap(x1,x2);
  23. }
  24. bool operator < (const Rect &rhs) const {
  25. if(x1==rhs.x1) return x2<rhs.x2;
  26. return x1<rhs.x1;
  27. }
  28. };
  29. Rect s[N],t[N];
  30. class FenwickTree {
  31. private:
  32. int val[N];
  33. int lowbit(const int &x) const {
  34. return x&-x;
  35. }
  36. public:
  37. void reset() {
  38. std::fill(&val[1],&val[n]+1,0);
  39. }
  40. void modify(int p,const int &x) {
  41. for(;p<=n;p+=lowbit(p)) {
  42. val[p]=std::max(val[p],x);
  43. }
  44. }
  45. int query(int p) const {
  46. int ret=0;
  47. for(;p;p-=lowbit(p)) {
  48. ret=std::max(ret,val[p]);
  49. }
  50. return ret;
  51. }
  52. };
  53. FenwickTree bit;
  54. int main() {
  55. for(register int T=getint();T;T--) {
  56. n=getint(),w=getint();
  57. bit.reset();
  58. for(register int i=1;i<=n;i++) {
  59. s[i].read();
  60. s[i].id=i;
  61. }
  62. for(register int i=1;i<=n;i++) {
  63. t[i].read();
  64. t[i].id=i;
  65. }
  66. std::sort(&s[1],&s[n]+1);
  67. std::sort(&t[1],&t[n]+1);
  68. for(register int i=1;i<=n;i++) {
  69. rank[s[i].id]=i;
  70. }
  71. for(register int i=n;i>=1;i--) {
  72. if(bit.query(rank[t[i].id])+t[i].w>w) {
  73. puts("NIE");
  74. goto Next;
  75. }
  76. bit.modify(rank[t[i].id],t[i].w);
  77. }
  78. puts("TAK");
  79. Next:;
  80. }
  81. return 0;
  82. }

[PA2014]Parking的更多相关文章

  1. bzoj3718 [PA2014]Parking

    Description 你的老板命令你将停车场里的车移动成他想要的样子.停车场是一个长条矩形,宽度为w.我们以其左下角顶点为原点,坐标轴平行于矩形的边,建立直角坐标系.停车场很长,我们可以认为它一直向 ...

  2. bzoj 3718: [PA2014]Parking

    Description 你的老板命令你将停车场里的车移动成他想要的样子. 停车场是一个长条矩形,宽度为w.我们以其左下角顶点为原点,坐标轴平行于矩形的边,建立直角坐标系.停车场很长,我们可以认为它一直 ...

  3. BZOJ3718[PA2014]Parking——树状数组

    题目描述 你的老板命令你将停车场里的车移动成他想要的样子.停车场是一个长条矩形,宽度为w.我们以其左下角顶点为原点,坐标轴平行于矩形的边,建立直角坐标系.停车场很长,我们可以认为它一直向右边伸展到无穷 ...

  4. 2018.10.29 bzoj3718: [PA2014]Parking(树状数组)

    传送门 显然只用判断两个会相交的车会不会卡住就行了. 直接树状数组维护后缀最大值就行了. 代码: #include<bits/stdc++.h> using namespace std; ...

  5. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  6. BZOJ 3721: PA2014 Final Bazarek

    3721: PA2014 Final Bazarek Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 645  Solved: 261[Submit][ ...

  7. BZOJ 3709: [PA2014]Bohater

    3709: [PA2014]Bohater Time Limit: 5 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1050  Solved: ...

  8. [LintCode] Parking Lot 停车场问题

    Design a parking lot. see CC150 OO Design for details.1) n levels, each level has m rows of spots an ...

  9. [CareerCup] 8.4 Parking Lot 停车场问题

    8.4 Design a parking lot using object-oriented principles. LintCode上的原题,请参见我的另一篇博客Parking Lot 停车场问题. ...

随机推荐

  1. Spring mvc 整合PageHelper

    Integer page=queryBean.getPage(); Integer pageSize=queryBean.getPageSize(); response.setContentType( ...

  2. Python并发编程之同步\异步and阻塞\非阻塞

    一.什么是进程 进程: 正在进行的一个过程或者说一个任务.而负责执行任务则是cpu. 进程和程序的区别: 程序仅仅只是一堆代码而已,而进程指的是程序的运行过程. 需要强调的是:同一个程序执行两次,那也 ...

  3. 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery )

    一. 前言 在前面的两个章节中,我们分别详细介绍了EF的增删改的两种方式(方法和状态)和EF查询的两种方式( Lambda和Linq ),进行到这里,可以说对于EF,已经入门了,本来应该继续往下进行E ...

  4. react+antdesign

    http://scaffold.ant.design/#/scaffolds/ng-alain http://scaffold.ant.design/#/scaffolds/react-redux-a ...

  5. nnet3配置中的上下文和chunk(块)大小

    Nnet3配置中的上下文和块大小 简介 本页讨论了nnet3配置中关于解码和训练的块大小以及左右上下文的某些术语.这将有助于理解一些脚本.目前,从脚本角度来看,没有任何关于nnet3的"概述 ...

  6. Vue项目中使用基于Vue.js的移动组件库cube-ui

    cube-ui 是滴滴公司的技术团队基于 Vue.js 实现的精致移动端组件库.很赞,基本场景是够用了,感谢开源!感谢默默奉献的你们. 刚爬完坑,就来总结啦!!希望对需要的朋友有小小的帮助. (一)创 ...

  7. win10免安装版本的MySQL的下载安装和配置

    下载mysql-xxx.zip(免安装版) 解压到自己想要的目录下(我的是D:\mysql\),打开mysql-5.7.21-winx64文件夹,新建my.ini文件,输入: [mysql] # 设置 ...

  8. 转:spring boot log4j2配置(使用log4j2.yml文件)---YAML 语言教程

    转:spring boot log4j2配置(使用log4j2.yml文件) - CSDN博客http://blog.csdn.net/ClementAD/article/details/514988 ...

  9. 爬虫时遇到的' 编码错误gbk ' 的解决方案

    # 每次请求一次,然后写文件,这样可以规避多次请求触发反爬虫 r = requests.get('https://www.pearvideo.com/video_1522192') html = r. ...

  10. Docker入门-docker-compose使用(二)

    Docker  Docker容器大行其道,直接通过 docker pull + 启动参数的方式运行比较麻烦, 可以通过docker-compose插件快速创建容器 1.安装docker-compose ...