洛谷P2571.传送带

news/2024/9/25 8:27:19/

洛谷P2571.传送带

  • 三分模板题

  • 用于单峰函数求极值

    • 一定可以将答案路径分成三段
    • 即AE - EF - FD (E和A可能重复,F和D可能重合)
      • E在线段AB上,F在线段CD上
    • 因为有两个不定点EF,因此假设E为参数,三分求F的位置
    • 再外层三分求E的位置
    • 在这里插入图片描述
  •   #include<iostream>#include<cmath>#include<cstdio>#include<cstring>using namespace std;const double eps=1e-8;double ax,ay,bx,by,cx,cy,dx,dy,p,q,r;double dis(double x1,double y1,double x2,double y2){double x_dis = x2 - x1 ,y_dis = y2 - y1;return sqrt(x_dis*x_dis + y_dis*y_dis);}//上图中f函数 用于三分找Fdouble f(double x1,double y1,double x2,double y2){return dis(x1,y1,x2,y2)/r + dis(x2,y2,dx,dy)/q;}double calc1(double x,double y)  //同理三分{double lx=cx,ly=cy,rx=dx,ry=dy;while(dis(lx,ly,rx,ry)>eps){double tmpx = (rx - lx) / 3,tmpy = (ry - ly) / 3;//左三等分点 和 右三等分点double lmidx=lx+tmpx,rmidx=rx-tmpx,lmidy=ly+tmpy,rmidy=ry-tmpy;double ans1=f(x,y,lmidx,lmidy),ans2=f(x,y,rmidx,rmidy);if(ans2 - ans1 > eps) rx = rmidx,ry = rmidy;else lx = lmidx,ly = lmidy;}return f(x,y,lx,ly);}double calc(){//三分double lx=ax,ly=ay,rx=bx,ry=by;//两点不重合while(dis(lx,ly,rx,ry)>eps){//x和y的三等分间距double tmpx = (rx - lx) / 3,tmpy = (ry - ly) / 3;//左三等分点 和 右三等分点double lmidx=lx+tmpx,rmidx=rx-tmpx,lmidy=ly+tmpy,rmidy=ry-tmpy;//左右两点各求一次答案double ans1=calc1(lmidx,lmidy) + dis(ax,ay,lmidx,lmidy)/p;double ans2=calc1(rmidx,rmidy) + dis(ax,ay,rmidx,rmidy)/p;//ans1更小,就是更优,往左收缩区间if(ans2 - ans1 > eps) rx = rmidx,ry = rmidy;else lx = lmidx,ly = lmidy;}return calc1(lx,ly) + dis(ax,ay,lx,ly)/p;}int main(){cin>>ax>>ay>>bx>>by>>cx>>cy>>dx>>dy>>p>>q>>r;printf("%.2lf\n",calc());}
    

http://www.ppmy.cn/news/1530207.html

相关文章

240924-Windows映射网络驱动器的方法

在Windows上加载网络盘&#xff08;映射网络驱动器&#xff09;可以通过以下步骤完成&#xff1a; 方法一&#xff1a;通过文件资源管理器 打开文件资源管理器&#xff1a; 可以按 Win E 打开&#xff0c;或者直接点击任务栏上的文件资源管理器图标。 点击“此电脑”&#x…

Java服务端服务发现:Nacos与Eureka的高级特性

Java服务端服务发现&#xff1a;Nacos与Eureka的高级特性 大家好&#xff0c;我是微赚淘客返利系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在微服务架构中&#xff0c;服务发现是实现服务间通信的关键机制。Nacos和Eureka是两种…

【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL18

实现3-8译码器① 描述 下表是74HC138译码器的功能表. E3 E2_n E1_n A2 A1 A0 Y0_n Y1_n Y2_n Y3_n Y4_n Y5_n Y6_n Y7_n x 1 x x x x 1 1 1 1 1 1 1 1 x x 1 x x x 1 1 1 1 1 1 1 1 0 x x x x x 1 1 1 1 1 1 1 1 1 …

鸿蒙OpenHarmony【小型系统内核(用户态启动)】子系统开发

用户态启动 用户态根进程启动 根进程是系统第一个用户态进程&#xff0c;进程ID为1&#xff0c;它是所有用户态进程的祖先。 图1 进程树示意图 根进程的启动过程 使用链接脚本将如下init启动代码放置到系统镜像指定位置。 #define LITE_USER_SEC_ENTRY __attribute__((s…

Ansible部署与应用基础

由于互联网的快速发展导致产品更新换代速度逐步增长&#xff0c;运维人员每天都要进行大量的维护操作&#xff0c;按照传统方式进行维护使得工作效率低下。这时部署自动化运维就 可以尽可能安全、高效的完成这些工作。 一、Ansible概述 1.什么是Ansible Ansible 是基于 Pytho…

Windows环境下Node.js多版本切换的实用指南

Web开发和全栈开发中&#xff0c;Node.js已成为不可或缺的工具之一。然而&#xff0c;随着项目的多样化和技术栈的更新迭代&#xff0c;我们可能需要同时管理多个Node.js版本以满足不同项目的需求。在Windows环境下&#xff0c;如何高效地切换这些版本成为了一个关键问题。简单…

React UI组件库推荐

Next UI&#xff1a;Vite | NextUI - Beautiful, fast and modern React UI Library Ant Design&#xff1a;Ant Design - 一套企业级 UI 设计语言和 React 组件库

solidwork装配体的零件常见错误--您在尝试识别的特征具有与其他特征的父/子关系

比如下面这种 如果点击编辑特征出现这个警告。 解决办法如下&#xff1a;