#P16186. [Ncpc2018]Firing the Phaser发射相位炮

[Ncpc2018]Firing the Phaser发射相位炮

题目描述

作为飞船舰长,你从未遇到过如此强大的敌人。现在你已经悄悄接近了敌方旗舰,并立即准备使用大型相位炮,试图在敌人发现你之前将其击毁。

这次射击不能有任何失误。如果你想在对抗敌方旗舰时还有胜算,这一炮必须完美。

你开始给相位炮充能,并从档案中调出了敌方旗舰的房间布局。你的飞船位于敌舰正上方,因此敌舰布局可以抽象为二维平面中的若干房间。

每个房间都是一个边平行于 xx 轴和 yy 轴的矩形。任意两个房间都不相交,甚至不会在一个点上接触。

相位炮由一个起点 (x,y)(x,y) 和一个角度 ϑ\vartheta 配置。相位光束会从 (x,y)(x,y) 出发,沿角度 ϑ\vartheta 指定的方向前进长度 \ell。所有被光束碰到的房间都会受到严重伤害。

你的目标是让这一炮击中尽可能多的房间。

相位炮几乎已经充能完成,只剩下找到最优配置。你发现这比想象中困难得多。不过充能完成前还有十秒,因此你决定写一个程序来解决这个问题。

输入格式

第一行包含两个整数 r,r,\ell

  • rr 表示敌舰中的房间数量;
  • \ell 表示相位炮光束长度。

满足:

1r15,11000.1\le r\le 15, \qquad 1\le \ell\le 1000.

接下来 rr 行,每行包含四个整数 x1,y1,x2,y2x_1,y_1,x_2,y_2,表示一个矩形房间:

  • 左下角为 (x1,y1)(x_1,y_1)
  • 右上角为 (x2,y2)(x_2,y_2)

满足:

$$0\le x_1<x_2\le 1000, \qquad 0\le y_1<y_2\le 1000.$$

输出格式

输出一行一个整数,表示一束相位光束最多能击中的房间数量。

只要光束碰到房间,就算击中该房间。

你可以假设答案在数值意义上是稳定的:如果所有房间都向四个方向各扩张 10610^{-6} 的距离,答案不会改变。

输入输出样例 #1

输入 #1

5 8
2 1 4 5
5 1 12 4
5 5 9 10
1 6 4 10
2 11 7 14

输出 #1

4

输入输出样例 #2

输入 #2

3 6
2 2 3 3
5 3 6 4
6 6 7 7

输出 #2

3