【BZOJ 1857】【SCOI 2010】传送带

2023-10-07 15:58
文章标签 bzoj 2010 scoi 1857 传送带

本文主要是介绍【BZOJ 1857】【SCOI 2010】传送带,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

做两次三分,第一次三分第一条线段上走出去的点,第二次三分第二条线段上到达的点。
证明这里就不写了,一堆三角函数。。。。反正一阶导数求出来一个过原点的二次函数,一开始是正,后来变成负,所以原函数是个凹函数(还是叫下凸函数??)
我一开始很鸡冻啊!为啥啊?导数直接取0不就好了?对啊是直接可以求出那条斜线和两条直线的夹角的,但是还要考虑这个角度能不能取到,还要考虑两条直线本身和坐标轴的夹角······算了我还是三分吧。。。。
话说我这里的三分竟然是。。。三等分?(滑稽)

#include<cmath>
#include<cstdio>
#include<vector>
#include<queue>
#include<cstring>
#include<iomanip>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#define ll long long
#define inf 1000000000
#define mod 1000000007
#define N 100000
#define eps 1e-3
#define fo(i,a,b) for(i=a;i<=b;i++)
#define fd(i,a,b) for(i=a;i>=b;i--)
using namespace std;
int ax,ay,bx,by,cx,cy,dx,dy;
int p,q,r;
double dis(double x1,double y1,double x2,double y2)
{return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}
double calc(double x,double y)
{double lx = cx , ly = cy , rx = dx , ry = dy;double x1,y1,x2,y2,t1,t2;while (fabs(rx-lx) > eps || fabs(ry-ly) > eps){x1 = lx + (rx - lx) / 3; y1 = ly + (ry - ly) / 3;x2 = x1 + (rx - lx) / 3; y2 = y1 + (ry - ly) / 3;t1 = dis(ax,ay,x,y) / p + dis(x,y,x1,y1) / r + dis(x1,y1,dx,dy) / q;t2 = dis(ax,ay,x,y) / p + dis(x,y,x2,y2) / r + dis(x2,y2,dx,dy) / q;if (t1 > t2) {lx = x1; ly = y1;} else {rx = x2; ry = y2;}}return dis(ax,ay,x,y) / p + dis(x,y,lx,ly) / r + dis(lx,ly,dx,dy) / q;
}int main()
{scanf("%d%d%d%d",&ax,&ay,&bx,&by);scanf("%d%d%d%d",&cx,&cy,&dx,&dy);scanf("%d%d%d",&p,&q,&r);double lx = ax , ly = ay , rx = bx , ry = by;double x1,y1,x2,y2,t1,t2;while (fabs(rx-lx)>eps || fabs(ry-ly)>eps){x1 = lx + (rx - lx) / 3; y1 = ly + (ry - ly) / 3;x2 = x1 + (rx - lx) / 3; y2 = y1 + (ry - ly) / 3;t1 = calc(x1,y1); t2 = calc(x2,y2);if (t1 > t2) {lx = x1; ly = y1;} else {rx = x2; ry = y2;}}printf("%.2lf\n",calc(lx,ly));return 0;
}

这篇关于【BZOJ 1857】【SCOI 2010】传送带的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/158830

相关文章

【系统架构设计师-2010年】综合知识-答案及详解

更多内容请见: 备考系统架构设计师-核心总结索引 文章目录 【第1题】【第2题】【第3题】【第4~5题】【第6题】【第7~8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第21题】【第22题】【第23题】【第24题】【第25题】【第26~27题】【第28题】【第29~30题】【第31

【BZOJ】1324 Exca王者之剑 最大权独立集

传送门:【BZOJ】1324  Exca王者之剑 题目分析:赤裸裸的最大权独立集。。。最小割解决 代码如下: #include <cstdio>#include <vector>#include <cstring>#include <algorithm>using namespace std ;#define REP( i , a , b ) for ( int

【BZOJ】1026: [SCOI2009]windy数 数位DP

传送门:【BZOJ】1026: [SCOI2009]windy数 题目分析:数位DP水题。 代码如下: #include <stdio.h>#include <cstring>#include <algorithm>#define rep( i , a , b ) for ( int i = a ; i < b ; ++ i )#define For( i ,

【BZOJ】2152: 聪聪可可 点分治

传送门:【BZOJ】2152: 聪聪可可 题目分析:记录权值和%3的路径的个数。。。然后去重。。没了。。 代码如下: #include <vector>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std ;typedef lo

基于yolov5的煤矿传送带异物检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv5的煤矿传送带异物检测系统是一种高效、智能的监测解决方案,专为煤矿等复杂工业环境设计。该系统利用YOLOv5深度学习算法,结合现场摄像头,对煤矿传送带上的异物进行实时监测与识别。 YOLOv5以其出色的检测速度和准确性著称,通过将原始图像划分为多个网格,并在每个网格中预测可能的目标边界框,实现对传送带上大块煤、矸石、锚杆、槽钢等异物的快速识别。系统能够自动区分正常物

九度考研真题 浙大 2010-2浙大1006:ZOJ问题

//题目1006:ZOJ问题 #include<iostream> #include<string.h> using namespace std; int main() { char s[1010]; char a[1010];//开始部分 char b[1010]; //中间部分  char c[1010];//后部分  int num1=0,n

九度考研真题 浙大 2010-1浙大1003:A+B

//题目1003:A+B #include<iostream> #include<string.h> using namespace std; int main() { int n1,n2; int s1[12],s2[12]; int s[12]; char c1[20],c2[20]; while(cin>>c1){ n1=0,n2=0;

在Visual Studio 2010中开发Qt程序

本文演示如何用VS2010开发QT的应用程序界面,前提是已经搭建好了开发环境,搭建方法很简单,我在之前的博客也有描述。此处不再赘述。 1.打开VS2010的IDE开发环境,新建一个QT Application的项目命名为QtGrapher,所有的设置都可以保持默认,创建完成后可以编译运行程序,如果环境配置都正确,会弹出一个空白的GUI界面,如下所示, 2.在IDE的解决方案资源管理器中双

QT+VTK+Visual Studio 2010联合开发

QT+VTK+Visual Studio 2010联合开发 由于开发VTK程序是需要的GUI环境需求比较苛刻,传统的MFC框架在开发简单的GUI程序时还行,稍微复杂一点的程序就显得生硬。因此在开源社区里,开发VTK的GUI程序时,普遍采用QT。以下简单描述这三者的关系。 准备工作,这三者应该提前安装,建议遵循安装顺序为先Visual Studio 2010,再按装QT,再按装CMake,最后安

QT与Visual Studio 2010整合的例子

做GUI界面的设计时,目前已不再拘泥于VS的MFC框架,有很多开源的工具。本例以QT与VS2012的整合为例,演示环境搭建,后续将会用QT做VT的开发工作。 第一步,下载QT和QT与VS的插件,在VS2010下以及结合VTK的情况,网络上经网友实验后效果比较好的版本如下: 1. QT:因为是与VS2010整合,所以选择版本:qt-win-opensource-4.8.5-vs2010.exe,