热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HDU1969Pie:运用二分查找算法优化解决方案

题目要求为生日派对准备馅饼,共有n个馅饼和f个朋友。每个馅饼的半径已知。任务是将这些馅饼公平地分配给所有参与者,包括自己在内,确保每个人获得相同大小的馅饼。通过使用二分查找算法,可以高效地找到最优解,实现资源的合理分配。

题目大意是要办生日Party,有n个馅饼,有f个朋友。接下来是n个馅饼的半径。然后是分馅饼了,
注意咯自己也要,大家都要一样大,形状没什么要求,但都要是一整块的那种,也就是说不能从两个饼中
各割一小块来凑一块,像面积为10的和6的两块饼(饼的厚度是1,所以面积和体积相等),
假设每人分到面积为5,则10分两块,6切成5。够分3个人,假设每人6。则仅仅能分两个了!
题目要求我们分到的饼尽可能的大! 仅仅要注意精度问题就能够了,一般WA 都是精度问题

运用2分搜索:

首先用总饼的体积除以总人数,得到每一个人最大能够得到的V,可是每一个人手中不能有两片或多片拼成的一块饼。

最多仅仅能有一片切割过得饼。

用2分搜索时。把0设为left。把V 设为right。mid=(left+right)/2;

搜索条件是:以mid为标志,假设每块饼都能够切割出一个mid。那么返回true,说明每一个人能够得到的饼的体积能够

大于等于mid;假设不能分出这么多的mid,那么返回false,说明每一个人能够得到饼的体积小于等于mid。

(1)精度为:0.000001

(2) pi 用反余弦求出,精度更高。

#include
#include
#include
using namespace std;
double pi = acos(-1.0);
int F,N;
double V[10001];
bool test(double x){int num=0;for(int i=0;i=F) return true;else return false;
}
int main()
{int t,r;double v,max,left,right,mid;scanf("%d",&t);while(t--){scanf("%d%d",&N,&F);F = F + 1;for(int i=0;i 1e-6){mid = (left + right) / 2;if(test(mid)) left = mid;else right = mid;}printf("%.4lf\n",mid);}return 0;
}



转:https://www.cnblogs.com/zhchoutai/p/8379415.html



推荐阅读
  • POJ 1696: 空间蚂蚁算法优化与分析
    针对 POJ 1696 的空间蚂蚁算法进行了深入的优化与分析。本研究通过改进算法的时间复杂度和空间复杂度,显著提升了算法的效率。实验结果表明,优化后的算法在处理大规模数据时表现优异,能够有效减少计算时间和内存消耗。此外,我们还对算法的收敛性和稳定性进行了详细探讨,为实际应用提供了可靠的理论支持。 ... [详细]
  • 1. 给定一个包含 n 个整数的数组 a 和一个整数 x,需要判断数组中是否存在两个不同的元素,它们的和恰好等于 x。2. 反转数对问题:对于一个包含 n 个不同元素的数组 A[1...n],如果存在 i < j 且 A[i] > A[j],则称 (i, j) 为一个反转数对。本文将详细探讨这两种与归并排序相关的算法题目,并提供高效的解决方案。 ... [详细]
  • Go语言中的高效排序与搜索算法解析
    在探讨Go语言中高效的排序与搜索算法时,本文深入分析了Go语言提供的内置排序功能及其优化策略。通过实例代码,详细讲解了如何利用Go语言的标准库实现快速、高效的排序和搜索操作,为开发者提供了实用的编程指导。 ... [详细]
  • 在幼儿园中,有 \( n \) 个小朋友需要通过投票来决定是否午睡。尽管这个问题对每个孩子来说并不是特别重要,但他们仍然希望通过谦让的方式达成一致。每个人都有自己的偏好,但为了集体和谐,他们决定采用一种最小割的方法来解决这一问题。这种方法不仅能够确保每个人的意愿得到尽可能多的尊重,还能找到一个最优的解决方案,使整体满意度最大化。 ... [详细]
  • 本文深入探讨了KMP算法在字符串匹配中的高效应用,通过分析主字符串S与模式字符串T之间的匹配过程,详细阐述了如何在主字符串中快速定位模式字符串的首次出现位置,提高了字符串匹配的效率和准确性。 ... [详细]
  • 高效排序算法是提升数据处理速度的重要技术。通过优化排序算法,可以显著提高数据处理的效率和性能。本文介绍了几种常见的高效排序算法,如快速排序、归并排序和堆排序,并通过实例代码展示了它们的具体实现。实验结果表明,这些算法在大规模数据集上的表现尤为突出,能够有效减少数据处理时间,提升系统整体性能。 ... [详细]
  • 在 Codeforces Global Round 3 的 B 题 "Inherent Talent" 中,主人公潇洒哥需要从 A 地前往 C 地,但两地之间没有直飞航班。他可以选择在 A 地和 B 地之间的中转航班,以便尽快抵达目的地 C。该问题的核心在于如何合理安排中转,以实现最短的旅行时间。 ... [详细]
  • 题目旨在解决树上的路径最优化问题,具体为在给定的树中寻找一条长度介于L到R之间的路径,使该路径上的边权平均值最大化。通过点分治策略,可以有效地处理此类问题。若无长度限制,可采用01分数规划模型,将所有边权减去一个常数m,从而简化计算过程。此外,利用单调队列优化动态规划过程,进一步提高算法效率。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 题目《UVa 11978 福岛核爆问题》涉及圆与多边形交集面积的计算及二分法的应用。该问题的核心在于通过精确的几何运算与高效的算法实现来解决复杂图形的面积计算。在实现过程中,特别需要注意的是对多边形顶点的平移处理,确保所有顶点包括最后一个顶点 \( p[n] \) 都经过正确的位移,以避免因细节疏忽导致的错误。此外,使用循环次数为50次的二分法能够有效提高算法的精度和稳定性。 ... [详细]
  • C++20 引入了指定初始化器(Designated Initializers),这一特性借鉴了 C# 的对象初始化器和 Kotlin 的 apply 范围函数。指定初始化器允许开发者在初始化结构体或类时,直接指定成员变量的值,提高了代码的可读性和简洁性。此外,该特性还支持嵌套初始化,使得复杂对象的初始化更加直观和灵活。本文将详细解析指定初始化器的语法、应用场景及其实现细节,并通过具体示例展示其在实际开发中的优势。 ... [详细]
  • CCCCGPLT L2005: 集合相似度计算的双指针算法优化 ... [详细]
  • 原题链接:http://codeforces.com/problemset/problem/848/A。题目要求我们构建一个特定的字符串。具体操作为:从给定字符串中选取若干部分,将其分割成两段,然后进行重新组合。本文将深入探讨该问题的解法,分析其背后的算法逻辑,并提供高效的实现方法。 ... [详细]
  • 2017广西邀请赛复盘:NWAFU全国邀请赛训练赛第八场
    本次训练赛(NWAFU全国邀请赛复盘之一)基于2017年广西邀请赛的赛题,重点解析了A、E、F、G等关键题目,旨在通过复盘帮助参赛者深入理解相关知识点和技术应用,为后续比赛提供宝贵经验。 ... [详细]
  • 使用Boost.Asio进行异步数据处理的应用程序主要依赖于两个核心概念:I/O服务和I/O对象。I/O服务抽象了操作系统接口,使得异步操作能够高效地执行。I/O对象则代表了具体的网络资源,如套接字和文件描述符,通过这些对象可以实现数据的读写操作。本文详细介绍了这两个概念在Boost.Asio中的应用及其在网络编程中的重要性。 ... [详细]
author-avatar
v时光i
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有