A6629 | 「SDOI2011」拦截导弹
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度、并且能够拦截任意速度的导弹,但是以后每一发炮弹都不能高于前一发的高度,其拦截的导弹的飞行速度也不能大于前一发。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
在不能拦截所有的导弹的情况下,我们当然要选择使国家损失最小、也就是拦截导弹的数量最多的方案。但是拦截导弹数量的最多的方案有可能有多个,如果有多个最优方案,那么我们会随机选取一个作为最终的拦截导弹行动蓝图。
我方间谍已经获取了所有敌军导弹的高度和速度,你的任务是计算出在执行上述决策时,每枚导弹被拦截掉的概率。
在不能拦截所有的导弹的情况下,我们当然要选择使国家损失最小、也就是拦截导弹的数量最多的方案。但是拦截导弹数量的最多的方案有可能有多个,如果有多个最优方案,那么我们会随机选取一个作为最终的拦截导弹行动蓝图。
我方间谍已经获取了所有敌军导弹的高度和速度,你的任务是计算出在执行上述决策时,每枚导弹被拦截掉的概率。
输入格式
第一行包含一个正整数 $n$,表示敌军导弹数量;
下面 $n$ 行按顺序该出了敌军所有导弹信息:
第 $i+1$ 行包含两个正整数 $h_i$ 和 $v_i$,分别表示第 $i$ 枚导弹的高度和速度。
下面 $n$ 行按顺序该出了敌军所有导弹信息:
第 $i+1$ 行包含两个正整数 $h_i$ 和 $v_i$,分别表示第 $i$ 枚导弹的高度和速度。
输出格式
输出包含两行。
第一行为一个正整数,表示最多能拦截掉的导弹数量;
第二行包含 $n$ 个 $0$ 到 $1$ 之间的实数,第 $i$ 的数字表示第 $i$ 没导弹被拦截掉的概率(你可以保留任意多位有效数字)。
第一行为一个正整数,表示最多能拦截掉的导弹数量;
第二行包含 $n$ 个 $0$ 到 $1$ 之间的实数,第 $i$ 的数字表示第 $i$ 没导弹被拦截掉的概率(你可以保留任意多位有效数字)。
输入输出样例
输入 #1
4 3 30 4 40 6 60 3 30
输出 #1
2 0.33333 0.33333 0.33333 1.00000
- 对于 $30\%$ 的数据,$1 \leq n \leq 1000$;
- 对于 $100\%$ 的数据,$1 \leq n \leq 5 \times 10^4$,$1 \leq h_i,v_i \leq 10^9$;
- 均匀分布着约 $30\%$ 的数据,所有 $v_i$ 均相等;
- 均匀分布着约 $50\%$ 的数据,满足 $1 \leq h_i,v_i \leq 1000$。
- 对于 $100\%$ 的数据,$1 \leq n \leq 5 \times 10^4$,$1 \leq h_i,v_i \leq 10^9$;
- 均匀分布着约 $30\%$ 的数据,所有 $v_i$ 均相等;
- 均匀分布着约 $50\%$ 的数据,满足 $1 \leq h_i,v_i \leq 1000$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?