UVALive - 3635 Pie 【二分答案(算法)】

“中分”(二分)算法(二分查找and二分答案) 这种方法要求满足条件的答案是单调有序的,其基本思想是在答案可能的范围([L,R])内二分查找答案,不断检查当前答案是否满足题目的要求,根据检查结果更新查找的区间,最终取得最符合题目要求的答案进行输出。二分搜索算法的应用不仅限于精确匹配查找,‌还可以扩展到计算一个值的排名(‌比它更小的元素的数量)‌、‌前趋(‌下一个最小元素)‌、‌后继(‌下一个最大元素)‌以及最近邻等。像这题我们就可以从5开始搜,如果砍的数量比需要的木材还多,就往大了搜,如果砍的数量比需要的木材多,那就往下的搜,直到找到合适的答案。 阅读详情

题目链接:https://cn.vjudge.net/problem/UVALive-3635

题意:(蓝书)

思路:

因为答案有单调性,可以用二分答案的方法找出最大的答案;这里要注意的就是,题目的意思是每个人只能分到一种pie,一开始我以为可以把两个完整的pie分给一个人,所以卡了很久;(这里的二分答案挺有用的,建议找找资料学习学习)

代码:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<queue>
#include<map>
#include<stack>
#include<sstream>
#include<vector>
#include<string>
#include<set>

using namespace std;

#define IOS ios::sync_with_stdio(false); cin.tie(0);
#define REP(i,n) for(int i=0;i<n;++i)

int read(){

    int r=0,f=1;char p=getchar();
    while(p>'9'||p<'0'){if(p=='-')f=-1;p=getchar();}
    while(p>='0'&&p<='9'){r=r*10+p-48;p=getchar();}return r*f;
}

typedef long long ll;
typedef unsigned long long ull;
const int Maxn = 1e4+10;
const long long LINF = 1e18;
const int INF = 0x3f3f3f3f;
const int Mod = 10001;
const double PI = acos(-1.0);

double p[Maxn];
int n,f;

bool ok (double x) {
    int cnt = 0;  // 单个pi能切出几个x
    for (int i = 0; i < n; ++i) cnt+=floor(p[i]/x); // floor 小于参数的最大整数
    if(cnt >= f+1) return true;
    else return false;
}

int main (void)
{
    int t,r;
    scanf("%d",&t);
    while (t--) {
       scanf("%d%d",&n,&f);
       double maxn = 0;
       for (int i = 0; i < n; ++i) {
            scanf("%d",&r);
            p[i] = r*r*PI; maxn = max(maxn, p[i]);
       }
       double le = 0, ri = maxn, mid;
       while (ri-le > 1e-5) {  // 二分答案的算法,答案单调性
            mid = (le+ri)/2;
            if(ok(mid)) le = mid;
            else ri = mid;
       }
       printf("%.4f\n",ri);
    }
    return 0;
}

 

 

pie_PIE_PIE算法_ PIE 算法按照自己的理解写的 但是还有些问题,希望有相同感兴趣的给点建议 立即下载

相关推荐

微纳加工技术中的自对准硅化物(Silicide)工艺:关键步骤与应用场景解析

本文深入解析了微纳加工技术中的自对准硅化物(Silicide)工艺,详细介绍了其关键步骤与应用场景。从表面清洁、金属沉积到两步退火法,全面拆解工艺全流程,并探讨了不同技术节点下的工艺演进。文章还提供了实际应用中的问题排查方法和新兴技术对Silicide工艺的挑战,为芯片制造领域的工程师提供了实用参考。

weixin_30613727的博客 429

POJ-1129 Pie 解题报告

Description My birthday is coming up and traditionally I'm serving pie. Not just one pie, no, I have a number N of them, of various tastes and of various sizes. F of my friends are coming to my p

岁月流风、、 1596

SAP CEWB 高效批量调整工艺路线与BOM的实战指南

本文详细介绍了SAP CEWB工具在批量调整工艺路线与BOM中的高效应用。通过实战案例和操作指南,帮助制造业企业快速掌握批量修改技巧,显著提升工作效率,避免手工操作带来的错误和耗时。特别适合需要频繁更新工艺路线和BOM的企业用户。

weixin_42524708的博客 397

算法提高——基础算法(二分答案)

文章目录前言一、什么是二分答案二、算法介绍1.使用条件和适用情况2.代码模板3.例题解析总结 前言 博主在这几天刷算法的时候,被一些二分答案的题目几尽折磨,在苦苦刷题的时候从yxc大佬那里学到了新的二分模板,在对这个模板深入实践后,愈发感觉这个模板运用好几乎万能,所以在此时记录下我的一些新的理解,并对之前的博客相互印证。(二分查找细节讲解~~~~阅读量好少支持一下吧 没看过的可以看下,相信对你有帮助) 一、什么是二分答案 比如说你要从一本英汉词典上查一个单词,你从头到尾一页一页的翻着找,这样找可以保证一定

leoyongyuan的博客 3774

【Cadence】Virtuoso@LayoutXL 差分电路版图镜像同步技巧详解

本文详细介绍了在Cadence Virtuoso LayoutXL中实现差分电路版图镜像同步的技巧,包括核心需求、环境配置、分步操作指南及高级技巧。通过使用LayoutXL的Group功能,工程师可以高效保持差分电路的对称性,提升版图迭代效率,确保高速信号处理的稳定性。特别适用于深亚微米工艺下的差分放大器设计。

weixin_29215391的博客 323

基于多智能体协作的量化交易研究框架TradingAgents详解

量化交易系统通过算法模型分析市场数据,旨在实现自动化投资决策。其核心原理在于利用计算机强大的数据处理能力,结合统计学和机器学习方法,从历史数据中挖掘可重复的盈利模式。这一技术的价值在于能够克服人类情绪干扰,实现纪律性交易,并快速处理海量信息。在应用场景上,量化策略广泛应用于股票、期货、外汇等多个金融市场。本文聚焦的TradingAgents框架,创新性地引入了**多智能体协作**和**对抗性验证**机制,通过模拟真实投研团队的分工与辩论流程,构建了一个研究友好、决策过程可解释的量化交易研究平台,为探索大语言

weixin_36019375的博客 431

算法笔记 —— 二分答案

一、二分答案: 在答案可能的范围内[L,R]二分查找答案,检查当前答案是否满足题目的条件要求,根据判断结果更新查找区间。 二、题目类型: 求最大值、最小值、求满足条件的最大值或最小值、最大值中的最小值、最小值中的最大值、靠近的值。 三、模板:yxc 1.求符合条件的最小值: //求符合条件中的最小值 bool check(int x){}// 检查x是否满足条件 // 区间[l, r]被划分成[l, mid]和[mid + 1, r]时使用 int sreach(int l,..

m0_53257476的博客 2130

Nestjs框架: 集成 Prisma

NestJS官方文档提供了两种数据库相关的内容:Techniques下的数据库板块和Recipes下的具体数据库集成方案。本文以Prisma为例,演示了如何集成Prisma到NestJS项目中。首先创建NestJS项目并安装Prisma,配置MySQL数据库连接。通过Prisma CLI初始化项目、定义数据模型并生成迁移文件。接着创建Prisma模块和服务,配置Prisma客户端连接数据库。最后在控制器中注入PrismaService实现数据查询。整个过程包含了Docker启动MySQL、Prisma模型定

Wang的专栏 1293

【算法笔记】二分查找 && 二分答案 (超详细解析,一篇让你搞懂二分)

二分查找应该算是是很多人入门的第一个算法吧,无论是ACM还是蓝桥杯都是必学的算法,很多人都觉得其非常简单,但它真的那么简单吗?Knuth 大佬(发明 KMP 算法的那位)曾说过:(思路很简单,细节是魔鬼)本文将为大家详细讲解二分查找的原理和使用场景并且,我们就是要深入细节,我将从while循环中该不该带mid该不该+1等地方分析这些细节的差异及出现差异的原因,保证你能灵活准确的写出二分查找算法。二分查找,也称为折半查找(Binary Search),是一种在有序数组中查找特定元素的搜索算法。

2302_79577794的博客 2万+

保姆级教程:用CH34xSerCfg工具修改USB转串口芯片的VID/PID,避免驱动冲突

本文详细介绍了如何使用CH34xSerCfg工具修改USB转串口芯片的VID/PID,解决驱动冲突问题。通过实战案例和配置技巧,帮助开发者高效管理嵌入式设备,避免常见的USB设备识别问题,提升开发效率。

weixin_30924239的博客 224

通信原理 | python调制识别数据及代码

数据集包含了从-20dB 到+18dB 总共 20 个信噪比(步长为 2)下的 11 种调制信号, 包括 AM-DSB、 AM-SSB 和 WBFM 三种模拟调制信号,以及 BPSK、 QPSK、 8PSK、 CPFSK、 GFSK、 PAM4、 QAM16 和 QAM64 八种数字调制信号。其中信号的中心频率为 200KHz,采样频率为 1Msamp/s,且每个信噪比下每种调制信号包含 1000 个信号。其中每个信号包含 IQ 两路数据,且每一路数据都包含有 128 个采样点。

若北辰 1758

二分答案详解

二分答案详解,包含二分答案算法思想,例题实现思路及代码讲解。将二分答案问题抽象成:求满足条件的最大(小)值、最大值最小化问题、最小值最大化问题三类,并附带例题讲解。博文内包含例题:(P1873 [COCI 2011/2012 #5] EKO / 砍树)、(P2440 木材加工)、(P1182 数列分段 Section II)、(P1824 进击的奶牛)。

weixin_43100558的博客 5920

高通平台蓝牙学习-- 基于WCN6750 Bluetooth 5.2的讲解

摘要:蓝牙5.2解决方案WCN6750具备多项先进特性:完全兼容5.2标准及ANT+协议,支持2Mbps高速BLE和长距离传输;采用射频集成方案,与WLAN共享天线并支持5G并发;内置功率放大器,支持Class1/2传输;提供双音频流和Slimbus接口优化。其HCI UART接口支持3.2Mbps速率,通过BlueZ协议栈实现蓝牙5.2功能,包括2Mbps模式和长距离传输,符合核心规范要求。(149字)

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 3万+

UVALive 3635-Pie-二分

给n个面积的蛋糕,要求每个人最后只拿一个等面积的圆蛋糕,问最后每个人能拿到的最大的面积是多少? 所有蛋糕都是完整的圆以及  每个人拥有圆形蛋糕的 面积与他人一样  http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33697 二分  答案X; 对于X 把所有原有的蛋糕去除X 即可得到

缺氧 557

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

UVALive 3635 Pie (二分答案)

题意:有F+1个人来分N个圆形派,要求每个人得到的派必须是一整块的,不能是几块拼在一起的,而且每个人得到的派的大小一样,问每个人最多能得到的派的面积。 思路:一开始拿到题目,我尝试推公式,后来觉得实在找不到规律,看了书,发现是二分答案,把问题转化为“是否可以让每个人的到面积为x的派”。因为派是不可以拼起来的,所以每个派可以分到[PI*r^2 / x]个派,把每个派可以分出的块加起来看是否>=F+

blzorro的专栏 1220

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

UVALive - 3635 - Pie(二分)

题意:有F + 1(1 <= F <= 10000)个人分N(1 <= N <= 10000)个圆形派,每个人得到的派面积相同,且必须是一整块(不能够两个甚至多个派拼在一起),求每个人最多能得到多大面积的派。(误差最多到0.001) 因为答案是小数类型的,并且N高达10000,故不可暴力枚举。 可以二分枚举最大面积,然后检查是否切出来派的总个数大于等于F + ...

dingyaosao9792的博客 153

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

UVALive - 3635 Pie(二分答案查找)

点击打开题目链接 Time limit: 1 second My birthday is coming up and traditionally I'm serving pie. Not just one pie, no, I have a numberNof them, of various tastes and of various sizes.Fof my

Chook_lxk的博客 541

例题1.13 派 Pie UVALive - 3635 二分

传送门 题目大意:你和你的f个朋友分蛋糕(也就是一共f+1个人),有n个蛋糕,要求每个人分到的一样多,并且蛋糕不能拼接。可以有剩余。求每个人最大能分到的面积是多大。给定n个蛋糕的半径。 解题思路:直接二分即可,答案一定在0和最大的蛋糕面积之间。我们测试x是否可以,我们只需检测可以切下多少个x面积的蛋糕,只要够f+1块即可。本题与白书割绳子例题一样。 AC代码: #include

sky的博客 336

UVALive 3635 Pie

很常规的一道二分题 直接二分答案就好 注意eps太小会T #include #include #include #include #include #include #include #include #include #include #define scnaf scanf #define cahr char #define bug puts("bugbugbug"); using names

weilehuozhe的专栏 414

uvalive3635pie

分数二分。。。模板题,二分一个答案#include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std;const double pi = acos(-1.0); const int MaxN = 10005; int f , n;double pie[MaxN];bool ok(dou

就是想多赚点币子 271

[UVALive 3635] Pie

图片加载可能有点慢,请跳过题面先看题解,谢谢 客人是要吃整块又不是吃整个。。。 所以你还不会做? $ $ 那你就可以二分一个答案 \(x\) 啊,然后看一下所有的派都用来切成面积为 \(x\) 的整块最多能切成多少块(记得要向下取整) 如果块数大于等于 \(F+1\) ,那就说明 \(x\) 合法 那你不就 \(AC\) 了嘛 //made by Hero_of_Someone #inclu...

weixin_30469895的博客 74

Web前端最全(06-07)二分,两年前端开发经验

阿里十分注重你对源码的理解,对你所学,所用东西的理解,对项目的理解。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】j

2401_84617731的博客 432

(06-07)二分

1、UVALive 3971 Assemble 组装电脑 分析:最小值最大问题,一般采用二分来解决。。。本题核心:品质因子尽量大 #include #include #include #include #include #include #include using namespace std; int cnt; map id; int ID(char* s){

战场小包的博客 325

【基础算法】二分算法详解

二分算法是一种在有序区间中查找答案的方法,时间复杂度:O(log n)。每次把搜索区间分成两半,只保留可能存在答案的那一半,直到找到目标或搜索区间为空。

2301_80361697的博客 1567
上一篇: FZU 2214 Knapsack problem 【01背包】
下一篇: UVALive - 3971 Assemble 【二分答案】
Y390d
博客等级 码龄9年 11粉丝 165原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值