uvalive 2911 Maximum(贪心)

题目连接:2911 - Maximum


题目大意:给出m, p, a, b,然后xi满足题目中的两个公式, 要求求的 xp1 + xp2 +...+ xp的最大值。


解题思路:可以将x1 + x2 +...+ xm = b *  两端同时乘以根号a去计算。然后按照贪心的思想去计算。

 

#include <stdio.h>

#include <math.h>



int l, r;

double m, p, a, b, tmp, sum;



int main() {

    while (scanf("%lf%lf%lf%lf", &m, &p, &a, &b) == 4) {

	tmp = a * b;

	r = l = 0;

	sum = 0;

	for (int i = 0; i < m - 1; i++) {

	    if (tmp < a) {

		tmp++;

		l++;

	    }

	    else {

		tmp -= a;

		r++;

	    }

	}



	sum += l / pow(sqrt(a), p);

	sum += r * pow(sqrt(a), p);

	sum += pow((tmp / sqrt(a)), p);

	printf("%d\n", int(sum + 0.5));

    }

    return 0;

}

 

 

 

 

你可能感兴趣的:(live)