你想要一个完成激光表演的派对。不幸的是,你发现的唯一工作激光器远离你的房子而且太重而无法移动,所以你想要的 用一系列镜子将激光重新导向房子。
网格的布局使激光在位置(0,0)指向北方(in 正y方向)和房子(Hx,Hy);我们可以想到两者 激光器和房子作为2D平面中的点。已有N个镜子 (1 <= N <= 100,000)分散在整个网格中 与轴成45度角对齐。例如,镜子对齐 喜欢\将从下面进入一束光并将其反射到 剩下。我们还可以将镜子视为位于镜头中的点 2D平面。
设置完配置后,您会注意到计划中存在一个主要缺陷:激光无法通过当前配置的镜子进入房屋!结果,你打算跑到场地上,然后再举起一面镜子(再次放在45 角度)以将激光重定向到房屋上。请数 在您可以完成的领域中的位置数量 这个目标。
所有坐标都是-1,000,000,000到1,000,000,000之间的整数。它 保证任何要放置的镜子都在这个范围内。 在离开这个位置后,光束永远不会回到(0,0)(并且镜子处于初始配置状态时,保证不会发生这种情况)。没有两面镜子 在太空中占据同一点,你无法找到自己的位置 与现有镜子相同的位置。
INPUT FORMAT:
* Line 1: The integers N, Hx, and Hy.
* Lines 2..N + 1: Line i+1 describes the ith mirror with 3 elements:
its (x,y) location, and its orientation (either '\' or '/').
INPUT:
4 1 2
-2 1 \
2 1 /
2 2 \
-2 2 /
OUTPUT FORMAT: A single integer giving the number of locations
where you can stand to redirect the laser to the house.
OUTPUT:
2
OUTPUT DETAILS:
A mirror at (0,1) or (0,2) placed in either direction would do the trick.
我的尝试: 我实际上尝试过蛮力解决方案。我首先将镜子添加到场的一些随机位置,通常在一个2 * Hx X 2 * Hy大的盒子中然后模拟镜子。如果它到了家,我会增加我的数量。对于小输入,这成功了,但是当我使用更大的输入时程序崩溃了。