?
给出N道难度递增的题目,难度用可能做出的百分比表示,选出K道题目使得做出K-1道题目的概率最大。
选k题的情况下做出k-1的概率为所有(1-p)*p*p...的和,直接尝试转化这个式子的效果并不明显。
换个思路,假设最优解已经包含了k-1个了,现在来选取最后一个。K-1个全部做出的概率是Pall(k?1),有一道为做出的概率是Pless(k?1),现在选取的是PCk,那么做出K-1道的概率是
Pall(k?1)?(1?P[PCk])+Pless(k?1)?P[PCk]=
Pall(k?1)+P[PCk]?(Pless(k?1)?Pall(k?1))
这是一个关于PCk的一次函数,如果Pless(k?1)?Pall(k?1)为正,选取最大的PCk,否则选取最小的。
那么我们每次选取的时候一定是选择剩下的最大或最小,那么说明答案一定是选取两边的概率,枚举比较一下就可以算出最大的概率了。
但是要求的是字典序最小的。左边不用管,对于右边,如果存在相同的value,应该选取index较小的。然后随便搞下就ok了。
?
#include
#include
#include
#include
#include
#include
#include
?