Peter算法小课堂—浮点数危机

大家先想想下面这个代码运行结果:

#include <bits/stdc++.h>
using namespace std;
int main(){double x=5.2;double y=4.1+1.1;cout<<(x<y)<<endl;cout<<x-y<<endl;return 0;
}

最终发现,

???但凡一个学过数学的人都知道4.1+1.1=5.2,难道……计算机CPU爆掉了?

其实,计算机在用二进制储存浮点数时会有误差,比如我们要凑0.2,计算机会先凑0.125,再凑0.0625,再再……,最终还是有那么一丢丢的误差。那么,我们就不能比较大小了吗?

再看一个代码:

#include <bits/stdc++.h>
using namespace std;
const double ERR=0.00000001;
int main(){double x=5.2;double y=4.1+1.1;cout<<(fabs(x-y)<ERR)<<endl;//判断浮点数"=="cout<<(x>y+ERR)<<endl;//判断浮点数">"cout<<(x<y-ERR)<<endl;//判断浮点数"<"cout<<(x>y-ERR)<<endl;//判断浮点数">="return 0;
}

结果……

不出所料,这一次竟然答对了!Emm……怎么理解呢

相信前3个大家一定理解,前面讲过是精度捣的乱。那最后一个呢?

我们用数轴来解释,

数轴: y-ERR           y               y+ERR

那么,我们但凡x在[y-ERR,y+ERR]里面,都算x=y,因为误差嘛。那x>=y就相当于x>y||x==y,即y-ERR<x

让我们大展身手八

计算\sqrt{a},保留两位小数

那么,一般人都用sqrt,我们呢……我们是高(蒟)手(蒻),必须用二分

分析:二分,枚举答案,很简单

代码:

#include <bits/stdc++.h>
#define ERR 0.000001
using namespace std;
typedef double d;
d a;
bool tooSmall(d x){return x*x<=a;}
int main(){cin>>a;d l=0;d r=1000;d ans=1;while(r-l>ERR){d mid=l+(r-l)/2;if(tooSmall(mid)) ans=l=mid;else r=mid;}cout<<fixed<<setprecision(2)<<ans<<endl;return 0;
}

 太戈编程427题

题目描述:

对于一元三次方程: x^3+x^2+x=a, 它的形式很特殊,我们可以证明它的解只有一个。

分析:和前一题差不多

代码:

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
const double ERR=0.000001;
double a;
bool tooSmall(double x){return pow(x,3)+pow(x,2)+x<a;
}
int main(){cin>>a;double l=-100,r=100;while(r-l>ERR){double mid=l+(r-l)/2;if(tooSmall(mid)) l=mid;else r=mid;}cout<<fixed<<setprecision(3)<<r<<endl;return 0;
}

当然,我有个朋友,他是个蒟蒻,他只学到for循环,也做了这道题,AC了,给大家看看代码,嘲笑一下

#include <bits/stdc++.h>
using namespace std;
int main(){double a,ans,Min=1000;cin>>a;for(double x=-10;x<=10;x+=0.001){double d=fabs(x*x*x+x*x+x-a);if(d<Min) Min=d,ans=x;}cout<<fixed<<setprecision(3)<<ans<<endl;return 0;
}

这也可以,好吧……

送礼就要体面

这道题洛谷里没有,我截图

请大家简要概括本题,语文?

其实这题就是相当于0/1分数规划

来推导吧!

这题还是用二分

二分

是否存在礼品集合S,含k个礼品,使得:k个礼品的性价比大于等于x

相当于\frac{\sum_{i\epsilon S}^{} vi}{\sum_{i\epsilon S}^{} pi}\geq x,奇妙的数学

下面进行推导

\frac{\sum_{i\epsilon S}^{} vi}{\sum_{i\epsilon S}^{} pi}\geq x

\sum_{i\epsilon S}^{} vi \geq x\sum_{i\epsilon S}^{} pi

\sum_{i\epsilon S}^{} vi-x\sum_{i\epsilon S}^{} pi\geq 0

\sum_{i\epsilon S}^{} \left ( v_{i} -xp_{i}\right )\geq 0

#include <bits/stdc++.h>
using namespace std;
const int N=100000;
const int ERR=0.000001;
int n,k,p[N],v[N],z[N];
bool OK(double x){for(int i=0;i<n;i++) z[i]=v[i]-x*p[i];sort(z,z+n);double sum=0;for(int i=n-k;i<n;i++) sum+=z[i];return sum>=0;
}
int main(){cin>>n>>k;for(int i=0;i<n;i++) cin>>v[i]>>p[i];double maxv=*max_element(v,v+n);double minp=*min_element(p,p+n);double l=0,r=maxv/minp,ans=0;while(r-l>ERR){double mid=l+(r-l)/2;if(OK(mid)) ans=l=mid;else r=mid;}cout<<ans<<endl;return 0;
}

希望这些对大家有用,三连必回

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/227443.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css 用多个阴影做出光斑投影的效果 box-shadow

css 用多个阴影做出光斑投影的效果 box-shadow 你首先需要知道的一点是 box-shadow 可以接收多个值&#xff0c;也就是可以设置多个阴影&#xff0c;这样就可以做一个类似光斑投影的效果。 一、效果 二、代码 里面用到了我一些 scss 工具方法&#xff0c;不过不影响&#xf…

【音视频 ffmpeg 学习】 RTMP推流 mp4文件

1.RTMP(实时消息传输协议)是Adobe 公司开发的一个基于TCP的应用层协议。 2.RTMP协议中基本的数据单元称为消息&#xff08;Message&#xff09;。 3.当RTMP协议在互联网中传输数据的时候&#xff0c;消息会被拆分成更小的单元&#xff0c;称为消息块&#xff08;Chunk&#xff…

二叉树的中序遍历,力扣

目录 题目地址&#xff1a; 题目&#xff1a; 解题方法&#xff1a; 解题分析&#xff1a; 解题思路&#xff1a; 代码实现&#xff1a; 注&#xff1a; 代码实现&#xff08;递归&#xff09;&#xff1a; 代码实现&#xff08;迭代&#xff09;&#xff1a; 题目地址&#xf…

【目标检测】yolov8结构及代码分析

yolov8代码:https://github.com/ultralytics/ultralytics yolov8的整体结构如下图&#xff08;来自mmyolo&#xff09;&#xff1a; yolov8的配置文件&#xff1a; # Ultralytics YOLO &#x1f680;, AGPL-3.0 license # YOLOv8 object detection model with P3-P5 outputs.…

跨境电商迎来综合竞争力比拼时代 五大趋势解读跨境2024

过去几年&#xff0c;跨境电商成为外贸出口增长的一大亮点&#xff0c;随着年底国务院办公厅《关于加快内外贸一体化发展的若干措施》的发布&#xff0c;跨境电商在促进经济发展、助力内外贸一体化发展方面的价值更加凸显。 这是跨境电商变化最快的时代&#xff0c;也是跨境电…

GrayLog日志平台的基本使用-ssh之Email报警

1、首先编辑并添加邮件配置到server.conf&#xff08;注意&#xff1a;是添加&#xff09; vim /etc/graylog/server/server.conf # Email transport transport_email_enabled true transport_email_hostname smtp.qq.com transport_email_port 465 transport_email_use_a…

Net6 Core webApi发布到IIS

Net6 Core Api发布到IIS不同于webapi&#xff0c;依赖框架不同&#xff0c;配置也移至项目内Program.cs 一、发布到指定文件夹和IIS&#xff0c;不过注意IIS应用程序池选择的是 “无托管代码“ 在IIS管理器中点击浏览&#xff0c;访问接口路径报500.19&#xff0c;原因是所依赖…

杰发科技AC7840——EEPROM初探

0.序 7840和7801的模拟EEPROM使用不太一样 1.现象 按照官方Demo&#xff0c;在这样的配置下&#xff0c;我们看到存储是这样的&#xff08;连续三个数字1 2 3&#xff09;。 使用串口工具的多帧发送功能 看不出多少规律 修改代码后 发现如下规律&#xff1a; 前四个字节是…

GBASE南大通用携手宇信科技打造“一表通”全链路解决方案

什么是“一表通”&#xff1f; “一表通”是国家金融监督管理总局为发挥统计监督效能、完善银行保险监管统计制度、推进监管数据标准化建设、打破数据壁垒&#xff0c;而制定的新型监管数据统计规范。相较于以往的报送接口&#xff0c;“一表通”提高了对报送时效性、校验准确…

stm32学习笔记:TIM-定时中断和外部时钟

定时器四部分讲解内容&#xff0c;本文是第一部分 ​​​​​TIM简介 基本定时器 时基单元&#xff1a;预分频器、计数器、自动重装载寄存器 预分频器之前&#xff0c;连接的就是基准计数时钟的输入&#xff0c;由于基本定时器只能选择内部时钟&#xff0c;所以可以认为这根…

【MySQL】数据库之存储过程(“SQL语句的脚本“)

目录 一、什么是存储过程&#xff1f; 二、存储过程的作用 三、如何创建、调用、查看、删除、修改存储过程 四、存储过程的参数&#xff08;输入参数&#xff0c;输出参数&#xff0c;输入输出参数&#xff09; 第一种&#xff1a;输入参数 第二种&#xff1a;输出参数 …

【数据结构】什么是二叉树?

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 &#x1f4cc;二叉树的定义 &#x1f4cc;二叉树的特点 &#x1f4cc;特殊二叉树 &#x1f4cc;二叉树的性质 &#x1f4cc;二叉树的存储结构 &#x1f4cc;二叉树…

链表精选题集

目录 1 链表翻转 题目链接&#xff1a; 解题&#xff1a; 试错版&#xff1a; 2 找中间节点 题目链接: 题解&#xff1a; 3 找倒数第k个节点 题目链接&#xff1a; 题解&#xff1a; 4 将两个升序链表合并为一个升序链表 题目链接&#xff1a; 题解&#xff1a; …

Spark SQL

目录 一、Spark SQL简介 &#xff08;一&#xff09;从Shark说起 &#xff08;二&#xff09;Spark SQL架构 &#xff08;三&#xff09;为什么推出Spark SQL 二、DataFrame概述 三、DataFrame的创建 四、DataFrame的保存 五、DataFrame的常用操作 六、从RDD转换得到D…

nodejs+vue+ElementUi农产品团购销售系统zto2c

目标是为了完成小区团购平台的设计和实现&#xff0c;在疫情当下的环境&#xff0c;方便小区业主购入生活所需&#xff0c;减小居民的生活压力 采用B/S模式架构系统&#xff0c;开发简单&#xff0c;只需要连接网络即可登录本系统&#xff0c;不需要安装任何客户端。开发工具采…

mxxWechatBot微信机器人V2版本文档说明

大家伙&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 先看这里 一、前言二、mxxWechatBot流程图三、怎么使用&#xff1f; 一、前言 经过不断地探索与研究&#xff0c;mxxWechatBot正式上线&#xff0c;届时全面开放使用。 mxxWechatBot&am…

LLM之RAG实战(十一)| 使用Mistral-7B和Langchain搭建基于PDF文件的聊天机器人

在本文中&#xff0c;使用LangChain、HuggingFaceEmbeddings和HuggingFace的Mistral-7B LLM创建一个简单的Python程序&#xff0c;可以从任何pdf文件中回答问题。 一、LangChain简介 LangChain是一个在语言模型之上开发上下文感知应用程序的框架。LangChain使用带prompt和few-…

小米电脑管家 - 手机平板电脑家居互联

系列文章目录 前言 联想电脑安装小米电脑管家实现设备互联 如图&#xff0c;将 小米平板 5 Pro 作为联想笔记本 GeekPro 5000 &#xff08;这垃圾电脑&#xff09;的副屏。 可以在小米平板控制笔记本&#xff0c;如图所示 一、官方使用手册 参考&#xff1a;小米电脑管家帮助 …

听GPT 讲Rust源代码--src/tools(34)

File: rust/src/tools/clippy/clippy_lints/src/collection_is_never_read.rs 文件"collection_is_never_read.rs"位于Rust源代码中的clippy_lints工具中&#xff0c;其作用是检查在集合类型&#xff08;如Vec、HashMap等&#xff09;的实例上执行的操作是否被忽略了…

学习笔记13——Spring整合Mybatis、junit、AOP、事务

学习笔记系列开头惯例发布一些寻亲消息 链接&#xff1a;https://baobeihuijia.com/bbhj/ Mybatis - Spring&#xff08;使用第三方包new一个对象bean&#xff09; 原始的Mybatis与数据库交互【通过sqlmapconfig来配置和连接】 初始化SqlSessionFactory获得连接获取数据层接口…