这道题可以归入二分入门练习题,二分法解题一般情况下都和精度挂钩。
题目大意:F+1 个人一起分割 N 块馅饼,注意每个人所得到的部分不能是几块碎馅饼拼凑起来的。题目描述很简单,这里就不赘述了。附链接:http://poj.org/problem?id=3122。
大体思路:这道题首先需要确定怎么二分。即确定最小值和最大值以及判断条件。最小值取所有馅饼中最大的那块(设为Max)除以 F+1,然后最大值为所有馅饼总面积除以 F+1,判断条件也比较清楚,就是最大值和最小值之差要小于误差 0.00001。这道题我一开始用下面代码提交时超时了,然后我查不出为什么,过了十几分钟,再交一次,ac了,我也不知道为什么。精度很重要(error不能再大了,可以小,但会超时)。
以下是ac代码:
#include<iostream>
#include<cstring>
#include<cmath>
#include<stdio.h>
using namespace std