A6221 | 「JLOI2014」镜面通道
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
在一个二维平面上,有一个镜面通道,由镜面 $AC$,$BD$ 组成,$AC$,$BD$ 长度相等,且都平行于 $x$ 轴,$B$ 位于 $(0,0)$。通道中有 $n$ 个外表面为镜面的光学元件,光学元件 $\alpha$ 为圆形,光学元件 $\beta$ 为矩形(这些元件可以与其他元件和通道有交集,具体看下图)。光线可以在 $AB$ 上任一点以任意角度射入通道,光线不会发生削弱。当出现元件与元件,元件和通道刚好接触的情况视为光线无法透过(比如两圆相切)。
<img src="https://ooo.0o0.ooo/2017/05/03/5909252e3ac3b.jpg">
如上图,S到T便是一条合法线路。
当然,显然存在光线无法透过的情况,下面举例说明:
<img src="https://ooo.0o0.ooo/2017/05/03/5909252e3ebe6.jpg">
现在假设,取走中间那个矩形,那么就可以构造出一条穿过通道的光路,如图中的S到T。
<img src="https://ooo.0o0.ooo/2017/05/03/5909252e4b0f9.jpg">
现在给出通道中所有元件的信息($\alpha$ 元件包括圆心坐标和半径 $(x_i,y_i),r_i$,$\beta$ 元件包括左下角和右上角坐标 $(x_1,y_1),(x_2,y_2)$),并交给你一个艰巨的任务:请求出至少拿走多少个光学元件后,存在一条光线线路可以从CD射出。
<img src="https://ooo.0o0.ooo/2017/05/03/5909252e3ac3b.jpg">
如上图,S到T便是一条合法线路。
当然,显然存在光线无法透过的情况,下面举例说明:
<img src="https://ooo.0o0.ooo/2017/05/03/5909252e3ebe6.jpg">
现在假设,取走中间那个矩形,那么就可以构造出一条穿过通道的光路,如图中的S到T。
<img src="https://ooo.0o0.ooo/2017/05/03/5909252e4b0f9.jpg">
现在给出通道中所有元件的信息($\alpha$ 元件包括圆心坐标和半径 $(x_i,y_i),r_i$,$\beta$ 元件包括左下角和右上角坐标 $(x_1,y_1),(x_2,y_2)$),并交给你一个艰巨的任务:请求出至少拿走多少个光学元件后,存在一条光线线路可以从CD射出。
输入格式
第一行包含两个整数,$x$,$y$,表示 $C$ 点坐标。
第二行包含一个数字,$n$,表示有 $n$ 个光学元件。
接下来 $n$ 行表示元件信息。
第一个数字如果是 `
第一个数字如果是 `
第二行包含一个数字,$n$,表示有 $n$ 个光学元件。
接下来 $n$ 行表示元件信息。
第一个数字如果是 `
1`,表示为元件 $\alpha$,其后有三个整数 $x_i,y_i,r_i$ 分别表示圆心坐标和半径。 第一个数字如果是 `
2`,表示为元件 $\beta$,其后有四个整数 $x_1,y_1,x_2,y_2$ 分别表示左下角和右上角坐标(矩形都平行,垂直于坐标轴)。输出格式
输出包含一行,至少需要拿走的光学元件个数 $m$。
输入输出样例
输入 #1
1000 100 6 1 500 0 50 2 10 10 20 100 2 100 10 200 100 2 300 10 400 100 2 500 10 600 100 2 700 0 800 100
输出 #1
2
对于所有数据,$x \leq 100000,\ y \leq 1000,\ n \leq 300$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?