首页 > 技术文章 > POJ 2976(二分搜索+最大化平均值)

violet-acmer 2018-10-17 21:55 原文

 

传送门

 

•参考资料

  [1] : POJ 2976 Dropping tests 题解 《挑战程序设计竞赛》

  [2] : POJ 2976 3111(二分-最大化平均值)

•题意

  有 n 们课程,第 i 门课程的得分和总分分别为 ai 和 bi

  让你从中选出 n-k 门课程,使得 $100\cdot \frac{\sum_{i=1}^{n}a_i}{\sum_{i=1}^{n}b_i}$ 最大;

  结果要求四舍五入;

•题解

  二分答案;

  对于某一答案 x,判断是否可以选出 n-k 门课程,使得 $100\cdot \frac{\sum_{i=1}^{n}a_i}{\sum_{i=1}^{n}b_i} \ge x$ 成立;

  上述式子可以进一步转化一下:

      $\begin{aligned} 100\cdot \frac{\sum_{i=1}^{n}a_i}{\sum_{i=1}^{n}b_i} \ge x \ &\Leftrightarrow \frac{\sum_{i=1}^{n}a_i}{\sum_{i=1}^{n}b_i} \ge \frac{x}{100}\\ &\Leftrightarrow \sum_{i=1}^{n}a_i \ge \frac{x}{100}\cdot \sum_{i=1}^{n}b_i 
\\ &\Leftrightarrow \sum_{i=1}^{n}(a_i\ -\ \frac{x}{100}\cdot b_i) \ge 0\end{aligned}$

  那么,我们只需每次按照 $a_i\ -\  \frac{x}{100}\cdot b_i$ 排序取前 n-k 大并判断 x 是为否可行解即可;

•Code

  POJ2976.cpp

•有感而发

  太晚了,身心疲惫,如果明天有空的话,再写上自己对于此题的理解吧,真是个充实愉快的一天啊。

  对了,今天是我们学校70周年校庆,校庆再图书馆前的广场举行,声音震天响;

  听着外面的热闹声,在和我一个人奋斗相对比,心中难免有些没落,自己选择的ACM,再苦再难也要扛着。

  莫名地想到,下一个校庆,我会以何种身份出现在学校呢?

                                  2018.10.17  21:54

推荐阅读