题目描述
要考研了,小码哥非常焦急,他要开始背英语单词,每个单词的长度是lil_ili ,小码哥有pipipi的概率认识这个单词,小码哥要从一个有nnn个单词的总清单里按顺序的背单词,小码哥有一个认识清单,里面放的都是他认识的单词,如果小码哥背到第iii个单词不认识这个单词,小码哥会把该单词背一遍并且把自己认识的单词从头背一遍,如果小码哥认识这个单词,他会把该单词背一遍,并且把这个单词放进自己的认识清单里。问如何排序小码哥背单词的长度的期望最大,期望是多少。
输入格式
第一行包含单个整数n(1≤n≤50000)n(1\le n\le 50000)n(1≤n≤50000)。下面nnn行中的第iii行包含两个整数,用一个空格隔开lil_ili和pip_ipi(1≤li≤1000,0≤pi≤1001\le l_i\le 1000,0\le pi\le 1001≤li≤1000,0≤pi≤100)——第iii个单词的长度和小码哥认识这个单词的概率(以百分比为单位)。
输出格式
单行打印单个实数表示小码哥背单词的长度的最大期望。绝对误差或相对误差不超过10−910^{-9}10−9。
输入样例1
3
100 6
100 8
100 10
输出样例1
326.12
输入样例2
5
100 6
100 8
100 10
2 99
1000 1
输出样例2
1364.045
分析
我们要为所有的单词排一个顺序,使得最终背诵的单词长度期望最大。
设wiw_iwi为单词iii的权值 li∗pil_i*p_ili∗pi。
假设a、b两个单词,如果小码哥先背b后背a,那么他背到a的时候期望要加上
la∗pa+(1−pa)∗(w其他+wb+wa)(1)l_a*p_a+(1-p_a)*(w_{其他}+w_b+w_a)\qquad (1)la∗pa+(1−pa)∗(w其他+wb+wa)(1)
如果先背a后背b那么背到b时他的期望要加上:
lb∗pb+(1−pb)∗(w其他+wb+wa)(2)l_b*p_b+(1-p_b)*(w_{其他}+w_b+w_a)\qquad (2)lb∗pb+(1−pb)∗(w其他+wb+wa)(2)
我们给(1)式子乘上(1−pb)(1-p_b)(1−pb),(2)式乘上(1−pa)(1-p_a)(1−pa):
la∗pa∗(1−pb)+(1−pa)∗(1−pb)∗(w其他+wb+wa)(1)l_a*p_a*(1-p_b)+(1-p_a)*(1-p_b)*(w_{其他}+w_b+w_a)\qquad (1)la∗pa∗(1−pb)+(1−pa)∗(1−pb)∗(w其他+wb+wa)(1)
lb∗pb∗(1−pa)+(1−pb)∗(1−pa)∗(w其他+wb+wa)(2)l_b*p_b*(1-p_a)+(1-p_b)*(1-p_a)*(w_{其他}+w_b+w_a)\qquad (2)lb