[noip2012d1t2] 国王游戏
题意:给定一个序列,每个点有a,b两个权值,每个点的sum值等于前面所有点a值的乘积/该点的b值
序列的值等于所有点的sum的最大值。
该序列的点不具单调性,所以无法二分,考虑贪心
首先只考虑由相邻两个数组成的二元组 显然它们的排列顺序对前后所有点的值都没有影响 设这两个数的权值分别为val[i],val[i+1]; 设sum[i]表示1~i的左权值乘积(sum[i]=sum[i-1]*left[i]); 则有: val[i]=sum[i-1]/right[i] val[i+1]=sum[i]/right[i+1] 故: val[i+1]=sum[i-1]*left[i]/right[i+1] =val[i]*left[i]*right[i]/right[i+1] 显然前一个数的left[i]*right[i]对后一个数有影响 推广到整个序列,则以left[i]*right[i]为关键字进行排序即可
由于数据规模过大,还需要打高精度...就写得很丑