《算法竞赛-训练指南》第一章-1.13_LA 3635
来源:互联网 发布:数据分析的道与术 ppt 编辑:程序博客网 时间:2024/05/28 15:10
这道题目好!非常好,虽然自己没有AC。但是,情有可原吧,当然没有AC就是没有AC,但是却是因为自己用了自己写的PI导致没有AC。这个不知道可不可以原谅呢?
题意是这样的,有N个pie,有F个朋友,让你把N个pie分成F +1让这些人都吃到一样的体积的pie,当然形状无所谓,但是你总不能这边一块,那边一块。加起来吧。
自己一想,这不也是求最大值么?果断二分答案啊。这不就一思考就想出来了。但是,就是判断所枚举的答案是不是符合条件的check函数的时候犹豫了很长时间,又是分情况考虑了,又是while循环了。但是自己认为还是能符合题意的解出来了的,但是错了,找了回错误还是不行。(谁会想到是PI的原因呢?)
然后想着,放着吧,看一下题解好了,一看,和我的方法一模一样,就是人家的check写的非常犀利。是好犀利,自己没有想到,我也不知道怎么说了。自己确实没有想到嘛。哭。。。
现在贴出自己的代码,注销的部分是题解的思想,(明显比我的简单):
#include <stdio.h>#include <string.h>#include <math.h>#include <iostream>#include <string>#include <algorithm>using namespace std;const int MAXN = 10011;const double PI = acos(-1.0);int pie[MAXN];double V[MAXN];double sum;int N, F;bool check(double key){double n = sum;for (int i = 0; i < N; i++){if (V[i] < key){n -= V[i];}else{ int cnt = 0;for (int j = i; j < N; j++){double temp = V[j];cnt += (int )floor(temp / key);}if (cnt >= (F + 1)){return true;}else{return false;}}if (n / (F + 1) < key){return false;}}}/*bool check(double key){int cnt = 0;for (int i = 0; i < N; i++){cnt += (int)floor(V[i] / key);}if (cnt >= (F + 1)){return true;}else{return false;}}*/int main(){int T;scanf("%d", &T);while (T--){scanf("%d%d", &N, &F);double MAX = -1.0;sum = 0;for (int i = 0; i < N; i++){scanf("%d", &pie[i]);V[i] = (double)pie[i] * pie[i] * PI;MAX = max(MAX, V[i]);sum += V[i];}sort(V, V + N); //用题解的话,这个排序就不需要了,但是好像也不是很影响速度,我和题解的时间是一样的. double left = 0;double right = MAX;while (right - left > 1e-5){double mid = (left + right) / 2;if (check(mid)){left = mid;}else{right = mid;}}printf("%.4lf\n", left);}//system("pause");return 0;}
- 《算法竞赛-训练指南》第一章-1.13_LA 3635
- 《算法竞赛-训练指南》第一章-1.4_LA 3708
- 《算法竞赛-训练指南》第一章-1.12_LA 3971
- 《算法竞赛-训练指南》第一章-1.15_LA 3902
- 《算法竞赛-训练指南》第一章-1.16_LA 3177
- 《算法竞赛-训练指南》第一章-1.20_LA 3905
- 《算法竞赛-训练指南》第一章-1.22_LA 3209
- 《算法竞赛-训练指南》第一章-1.23_LA 3695
- 《算法竞赛-训练指南》第一章-1.26_LA 3882
- 《算法竞赛-训练指南》第二章-2.12_LA 5059
- 《算法竞赛-训练指南》第二章-2.27_LA 5009
- 《算法竞赛-训练指南》第一章-1.21_LA2678
- 《算法竞赛-训练指南》第二章-2.28_LA 3485(simpson)
- 《算法竞赛-训练指南》第三章-3.6_LA 3027(并查集)
- 《算法竞赛-训练指南》第三章-3.7_LA 3429(树状数组)
- 《算法竞赛入门经典——训练指南》第一章相关内容
- 《算法竞赛入门经典——训练指南》第一章相关内容
- 《算法竞赛-训练指南》第一章-1.5_UVa 10881
- http://www.cnblogs.com/haojianwei/archive/2010/03/02/1676707.html
- hdu 2844 Coins 多重背包基础题
- hdu2533 N皇后问题
- 经验交流七个方法可以帮助站长判断关键词的难度系数
- HDU 1005 疏忽了一个问题!
- 《算法竞赛-训练指南》第一章-1.13_LA 3635
- Android Resource介绍和使用
- 学习Machine Leaning In Action(二):kNN
- 做好网站内容重要性
- linux环境下一个进程最多能有多少个线程?
- CSS cursor 属性
- apache项目概览
- 【命令学习】grep
- 如何解决代码版本不一致的问题