《小P的强力值》题目分析
令P = ΠAi^(1/Bi)
两边取log有:log(P) = Σlog(Ai)/Bi
显然log(P)越大P也越大。
观察log(P)我们可以发现
1)每种属性的收益是独立的。也就是说,当我选择第i种属性+1时,收益只与当前的Ai(当前Ai是指初始Ai+已经分配给i属性的能力点)和Bi有关,与其他属性无关。
2)每种属性内部是收益递减的。也就是说,对于第i种属性,我们第一次+1时,收益比第二次+1时大;第二次比第三次收益大。
所以我们可以用贪心策略来分配能力值。每次分配给当前提升最大的属性即可。
估计是又有log又有除法又有累加又有exp导致精度问题 反正都暴力算了,cal改成这样就更直接 double cal(int pos) { double result = 1; for (int i = 0; i < k; i++) { result *= pow((i == pos ? a[i] + 1 : a[i]),(1.0 / b[i])); } return result; }