uvalive 3635(贪心)
2014-09-26 16:56
387 查看
题意:过生日分蛋糕,有f个朋友,要求把n块蛋糕切开分给朋友和自己,每个人得到的蛋糕体积要相等,且每个人都只分一块,输出每个人能得到的最大的蛋糕的体积(可以有剩余)。
题解:结果一定是从0到最大蛋糕体积中间的某个数字,所以直接二分寻找看分出来的蛋糕是否够f + 1个人分。(好像π一定要用 PI = acos(-1.0)代替,直接3.141592654...会wa)。
#include <stdio.h>
#include <string.h>
#include <math.h>
const int N = 10006;
const double PI = acos(-1.0);
int n, f, t;
double v
, r, l, mid, a;
bool judge() {
int num = 0;
for (int i = 0; i < n; i++)
num += v[i] / mid;
if (num >= f + 1)
return true;
return false;
}
int main() {
scanf("%d", &t);
while (t--) {
scanf("%d%d", &n, &f);
r = l = 0;
for (int i = 0; i < n; i++) {
scanf("%lf", &a);
v[i] = a * a * PI;
r = r < v[i] ? v[i] : r;
}
while (r - l > 1e-5) {
mid = (r + l) / 2;
if (judge())
l = mid;
else
r = mid;
}
printf("%.4lf\n", mid);
}
return 0;
}
题解:结果一定是从0到最大蛋糕体积中间的某个数字,所以直接二分寻找看分出来的蛋糕是否够f + 1个人分。(好像π一定要用 PI = acos(-1.0)代替,直接3.141592654...会wa)。
#include <stdio.h>
#include <string.h>
#include <math.h>
const int N = 10006;
const double PI = acos(-1.0);
int n, f, t;
double v
, r, l, mid, a;
bool judge() {
int num = 0;
for (int i = 0; i < n; i++)
num += v[i] / mid;
if (num >= f + 1)
return true;
return false;
}
int main() {
scanf("%d", &t);
while (t--) {
scanf("%d%d", &n, &f);
r = l = 0;
for (int i = 0; i < n; i++) {
scanf("%lf", &a);
v[i] = a * a * PI;
r = r < v[i] ? v[i] : r;
}
while (r - l > 1e-5) {
mid = (r + l) / 2;
if (judge())
l = mid;
else
r = mid;
}
printf("%.4lf\n", mid);
}
return 0;
}
相关文章推荐
- UVAlive 2326 Moving Tables(贪心 + 区间问题)
- UVALive-7146 Defeat the Enemy (map+贪心)
- uvalive 2322 Wooden Sticks(贪心)
- uvalive 2949 - Elevator Stopping Plan(贪心+二分)
- UVa Live Archive 3635 & POJ 3122 - Pie
- UVA 10716 Evil Straw Warts Live 回文数 贪心
- UVALive 2322 Wooden Sticks 截木棍 排序+贪心
- UVALive - 3635 派(二分)
- UVALive 6424 Russian Dolls 贪心
- UVALive 4225 Prime Bases 贪心
- uvaLive 4475 - Dinner Hall(贪心)
- UVALive 7146 Defeat the Enemy (贪心+STL)
- UVA 10716 Evil Straw Warts Live(贪心)
- UVAlive 2322 Wooden Sticks(贪心)
- uvalive5986(贪心)
- UVALive 7483 贪心策略
- UVALive - 3635 Pie
- UVALive 3177 - 长城守卫(二分+贪心)
- UVALive - 4094 WonderTeam 贪心+推理
- uvalive3971(二分+贪心)