当前位置: 首页 > news >正文

三分

篇首语

啊~~三分~你比二分多一分~

              ——A86562U

正文

顾名思义,三分会比二分多一个分区,

但它是用来做什么的呢?

先来偷一道拿一道例题来举例

P3382 三分 - 洛谷

我们把二分的模板偷一份拿一份过来

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e1+10;
int n;
double l,r,a[N];
double check(double x)
{//求多项式,复制的 double sum=0;for(int i=n;i>=0;i--){sum=sum*x+a[i];}return sum;
}
signed main()
{cin>>n>>l>>r;for(int i=n;i>=0;i--)//反向输入系数 
    {cin>>a[i];}while(fabs(l-r)>=eps){double mid=(l+r)/2;if(check(mid)</*???*/){l=mid;//舍弃左区间
        }else{r=mid;//舍弃右区间
        }}printf("%.6f",r);return 0;
}

可是我们需要比较两次(l与中间值比较,r与中间值比较),而我们甚至不知道中间值是不是对的。所以我们要使用神奇的妙妙工具(1):

eps

eps是步长,一般是指定的精度的十分之一。它可以让我们的代码变成这样:

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e1+10;
const double eps=1e-6;
int n;
double l,r,a[N];
double check(double x)
{//求多项式,复制的 double sum=0;for(int i=n;i>=0;i--){sum=sum*x+a[i];}return sum;
}
signed main()
{cin>>n>>l>>r;for(int i=n;i>=0;i--)//反向输入系数 
    {cin>>a[i];}while(fabs(l-r)>=eps)//l<=r可能会发生精度问题 
    {double mid=(l+r)/2;if(check(mid+eps)>check(mid-eps)){l=mid;//舍弃左区间
        }else{r=mid;//舍弃右区间
        }}printf("%.6f",r);return 0;
}

这样可以把mid左边一点点的函数值和右边一点点的函数值比较,舍弃一边的区间,这样不断缩小区间直到满足精度要求。

这,就是三分。

http://www.hskmm.com/?act=detail&tid=17108

相关文章:

  • 完整教程:微服务基础2-网关路由
  • nginx ipv6 proxy配置
  • (三)数仓人必看!ODS 到 DWS 各层设计规范全解析,含同步/存储/质量核心要点
  • 【shell】系统资源不足fork: retry: Resource temporarily unavailable
  • 【语文训练】女乃龙?田力乃龙?
  • 抖动分为3个方面
  • 第20章 Day24 原型链
  • python自动化操作邮件
  • zabbix配置mysql监控
  • redis实现定期关单
  • 第18章 Day22 高阶混淆ast进阶
  • 关于ubuntu 用户切换的细节 su - user 和su user
  • 用 SeaTunnel 同步 MySQL 到 Doris:全量增量 + SQL 过滤
  • 在CodeBolcks下wxSmith的C++编程教程——使用自定义绘制和鼠标处理创建项目
  • trae 配置mysql_mcp
  • Apache NiFi 1.28.1 集群 + Kerberos 认证 + 多租户模式部署
  • 基于Java+SpringBoot+SSM,Flask福聚苑社区团购体系(源码+LW+调试文档+讲解等)/福聚苑社区/团购系统/社区团购/福聚苑/团购/社区/环境/福聚苑小区/在线团购/社区购物
  • 按需引入echarts
  • 软件构造的用户交互设计 4章
  • 自定义制作docker容器自动自愈容器镜像
  • 如何利用海外 NetNut 网络代理与 AICoding 实战获取 iPhone 17 新品用户评论数据?
  • 第一次编码器测试
  • 04-FreeRTOS的概述及编程规范
  • 10_ select/poll/epoll实现服务端的io多路复用
  • 模拟实战配置实验
  • 国标GB28181公网直播EasyGBS如何构建全域覆盖的应急管理与安全生产解决方案?
  • Serilog.AspNetCore与Serilog的区别
  • 基于MATLAB S函数实现多智能体间歇通信仿真
  • 我天,前端岗要消亡了吗?
  • 闲话