loj#P3781. 「SDOI2011」拦截导弹

「SDOI2011」拦截导弹

题目描述

某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度、并且能够拦截任意速度的导弹,但是以后每一发炮弹都不能高于前一发的高度,其拦截的导弹的飞行速度也不能大于前一发。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。

在不能拦截所有的导弹的情况下,我们当然要选择使国家损失最小、也就是拦截导弹的数量最多的方案。但是拦截导弹数量的最多的方案有可能有多个,如果有多个最优方案,那么我们会随机选取一个作为最终的拦截导弹行动蓝图。

我方间谍已经获取了所有敌军导弹的高度和速度,你的任务是计算出在执行上述决策时,每枚导弹被拦截掉的概率。

输入格式

第一行包含一个正整数 nn,表示敌军导弹数量;

下面 nn 行按顺序该出了敌军所有导弹信息:

i+1i+1 行包含两个正整数 hih_iviv_i,分别表示第 ii 枚导弹的高度和速度。

输出格式

输出包含两行。

第一行为一个正整数,表示最多能拦截掉的导弹数量;

第二行包含 nn0011 之间的实数,第 ii 的数字表示第 ii 没导弹被拦截掉的概率(你可以保留任意多位有效数字)。

4
3 30
4 40
6 60
3 30
2
0.33333 0.33333 0.33333 1.00000

数据范围与提示

  • 对于 30%30\% 的数据,1n10001 \leq n \leq 1000
  • 对于 100%100\% 的数据,1n5×1041 \leq n \leq 5 \times 10^41hi,vi1091 \leq h_i,v_i \leq 10^9
  • 均匀分布着约 30%30\% 的数据,所有 viv_i 均相等;
  • 均匀分布着约 50%50\% 的数据,满足 1hi,vi10001 \leq h_i,v_i \leq 1000

评分标准

对于每个测试点,若输出文件的第一行与标准输出相同,则得到该测试点 40%40\% 的分数,所输出文件的第二行的每个数与标准输出的误差不大于 10410^{-4},则得到该测试点 60%60\% 的分数,两项可叠加。