博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SCOI2010 传送带 [三分/模拟退火]
阅读量:4984 次
发布时间:2019-06-12

本文共 1680 字,大约阅读时间需要 5 分钟。

题目描述

在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段。两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R。现在lxhgww想从A点走到D点,他想知道最少需要走多长时间

输入输出格式

输入格式:

输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By

第二行是4个整数,表示C和D的坐标,分别为Cx,Cy,Dx,Dy

第三行是3个整数,分别是P,Q,R

输出格式:

输出数据为一行,表示lxhgww从A点走到D点的最短时间,保留到小数点后2位

输入输出样例

输入样例#1:

0 0 0 100

100 0 100 100
2 2 1

输出样例#1:

136.60

说明

对于100%的数据,1<= Ax,Ay,Bx,By,Cx,Cy,Dx,Dy<=1000 1<=P,Q,R<=10

题解

这道题其实可以用模拟A掉

把平面上的线段全部看成向量,因为有了ABCD四个点的坐标,所以我们可以用坐标来表示向量,除此之外我们需要设置一个变量 * 上这个初始向量就可以得到这个向量方向上的任意一条向量,也就是用两种循环来枚举,每次变量的改变多少就需要自己调试参数了

正解还是三分法,也可以用模拟退火,以后再补

#include
#include
#include
#include
#include
#include
#include
#define in(i) (i=read())using namespace std;const double dt=2e-4;int read() { int ans=0,f=1; char i=getchar(); while(i<'0' || i>'9') {if(i=='-') f=-1; i=getchar();} while(i>='0'&& i<='9') {ans=(ans<<1)+(ans<<3)+i-'0'; i=getchar();} return ans*f;}double ans=2147483647;double p,r,q;struct node { double x,y;}a[10];inline double dis(node a,node b) { return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}inline node get(node a,node b,double k) { return (node) {(b.x-a.x)*k+a.x, (b.y-a.y)*k+a.y};}inline double check(double i,double j) { node t1=get(a[1],a[2],i), t2=get(a[3],a[4],j); return dis(a[1],t1)/p+dis(t1,t2)/r+dis(t2,a[4])/q;;}int main(){ //freopen("walk.in","r",stdin); //freopen("walk.out","w",stdout); cin>>a[1].x>>a[1].y>>a[2].x>>a[2].y>>a[3].x>>a[3].y>>a[4].x>>a[4].y; cin>>p>>q>>r; for(double i=0;i<=1;i+=dt) { for(double j=0;j<=1;j+=dt) { ans=min(ans,check(i,j)); } } printf("%.2lf",ans); return 0;}

转载于:https://www.cnblogs.com/real-l/p/9319364.html

你可能感兴趣的文章
UINavigationController的视图层理关系
查看>>
LeetCode 题解之Add Digits
查看>>
iOS 电话在后台运行时,我的启动图片被压缩
查看>>
寒假作业03
查看>>
P1129 [ZJOI2007]矩阵游戏
查看>>
hdu2046 骨牌铺方格
查看>>
同心圆闪烁扩散功能
查看>>
自定义连接池
查看>>
应用程序不能全然结束的原因探秘及调试方法
查看>>
单元文件结构
查看>>
DOM、SAX、DOM4J、JDOM、StAX生成XML并返回XML字符串形式
查看>>
NOIP2011T2 统计单词数
查看>>
超好用超短的小程序请求封装
查看>>
软件工程——理论、方法与实践⑦
查看>>
批处理实现多线程执行命令列表文件
查看>>
跟牛牛老师学习python自动化的第六天
查看>>
Vim 加 Gmail 变身 Vmail
查看>>
(5) Orchard 开发之 Localization and NullLocalizer
查看>>
分类算法(1)--KNN
查看>>
一页纸商业计划书 (Business Plan) 模板(转载)
查看>>