P2571 [SCOI2010]传送带

题意:在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段。

  两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P,

  在CD上的移动速度为Q,在平面上的移动速度R。现在lxhgww想从A点走到D点,

  他想知道最少需要走多长时间

这貌似是物理题

第一道三分题,还是三分套三分(厉害了~~)

对AB,CD分别三分,求距离更新答案

因为判不了大小关系,取cnt=50来多次三分(足够了)

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cmath>
using namespace std;
#define love_nmr 0
int ax,ay,bx,by;
int cx,cy,dx,dy;
int p,q,R;
inline double dis(double x,double y,double xx,double yy)
{
    return sqrt((xx-x)*(xx-x)+(yy-y)*(yy-y));
}
struct node
{
    double x,y;
};
inline double juli(node t)
{
    double diss=dis(ax,ay,t.x,t.y);
    node l,r;
    l.x=cx;
    l.y=cy;
    r.x=dx;
    r.y=dy;
    double ans=0;
    int cnt=50;
    while(cnt--)
    {
        node mid1,mid2;
        mid1.x=(l.x+(r.x-l.x)/3.0);
        mid1.y=(l.y+(r.y-l.y)/3.0);
        mid2.x=(r.x-(r.x-l.x)/3.0);
        mid2.y=(r.y-(r.y-l.y)/3.0);
        double tot1=diss/(double)p+dis(t.x,t.y,mid1.x,mid1.y)/(double)R+dis(mid1.x,mid1.y,dx,dy)/(double)q;
        double tot2=diss/(double)p+dis(t.x,t.y,mid2.x,mid2.y)/(double)R+dis(mid2.x,mid2.y,dx,dy)/(double)q;
        if(tot1>tot2)
        {
            ans=tot2;
            l.x=mid1.x;
            l.y=mid1.y;
        }
        else
        {
            ans=tot1;
            r.x=mid2.x;
            r.y=mid2.y;
        }
    }
    return ans;
}
int main()
{
    scanf("%d%d%d%d%d%d%d%d%d%d%d",&ax,&ay,&bx,&by,&cx,&cy,&dx,&dy,&p,&q,&R);
    node l,r;
    l.x=ax;
    l.y=ay;
    r.x=bx;
    r.y=by;
    double ans=0;
    int cnt=50;
    while(cnt--)
    {
        node mid1,mid2;
        mid1.x=(l.x+(r.x-l.x)/3.0);
        mid1.y=(l.y+(r.y-l.y)/3.0);
        mid2.x=(r.x-(r.x-l.x)/3.0);
        mid2.y=(r.y-(r.y-l.y)/3.0);
        double tot1=juli(mid1);
        double tot2=juli(mid2);
        if(tot1>tot2)
        {
            ans=tot2;
            l.x=mid1.x;
            l.y=mid1.y;
        }
        else
        {
            ans=tot1;
            r.x=mid2.x;
            r.y=mid2.y;
        }
    }
    printf("%.2lf",ans);
    return love_nmr;
}

原文地址:https://www.cnblogs.com/olinr/p/9436480.html

时间: 2024-10-28 06:37:37

P2571 [SCOI2010]传送带的相关文章

P2571 [SCOI2010]传送带——hyl天梦

P2571 [SCOI2010]传送带题解----天梦 如写的不好,请多见谅. 对于这道题,我首先想说,确实困惑了我好久,看网上的各种题解,却都不尽人意,思路早已明白,却不会操作.最后想想,还是觉得自己试着写一个吧.一种思路,与题解的思路不同,但理论上可行,但我当时似乎也不太相信那所谓的"理论",毕竟自己错过许多次,即使这样仍要相信自己吗?想着,便已经翻到了我所需要的--与自己思路相同的题解.网址是https://blog.csdn.net/qq_42920122/article/de

bzoj 1857: [Scoi2010]传送带 三分

题目链接 1857: [Scoi2010]传送带 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 934  Solved: 501[Submit][Status][Discuss] Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从A点走到D点,他想知道最少需要走多长时间 Inpu

【BZOJ 1857】 [Scoi2010]传送带

1857: [Scoi2010]传送带 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 737 Solved: 387 [Submit][Status][Discuss] Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从A点走到D点,他想知道最少需要走多长时间 Input 输入数

bzoj1857: [Scoi2010]传送带

Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从A点走到D点,他想知道最少需要走多长时间 Input 输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By 第二行是4个整数,表示C和D的坐标,分别为Cx,Cy,Dx,Dy 第三行是3个整数,分别是P,Q,R Output 输出数据为一行,表示lxhgww

BZOJ1857:[Scoi2010]传送带——题解

http://www.lydsy.com/JudgeOnline/problem.php?id=1857 Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从A点走到D点,他想知道最少需要走多长时间 Input 输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By 第二行是4个整数,表示C和D的坐标,分别为

[SCOI2010]传送带

Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从A点走到D点,他想知道最少需要走多长时间 Input 输入数据第一行是4个整数,表示A和B的坐标,分别为Ax,Ay,Bx,By 第二行是4个整数,表示C和D的坐标,分别为Cx,Cy,Dx,Dy 第三行是3个整数,分别是P,Q,R Output 输出数据为一行,表示lxhgww

2019年8月训练(壹)二分,三分

二分查找 P1024 一元三次方程求解 题目给出范围[-100,100],同时两根绝对值之差<=1,保证了每一个大小为1的区间里至多有1个解,也就是说当区间的两个端点的函数值异号时区间内一定有一个解,同号时一定没有解. 也就可以二分去做查找. AC码: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; double a,b,c,d; double f(double

【BZOJ-1857】传送带 三分套三分

1857: [Scoi2010]传送带 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 1077  Solved: 575[Submit][Status][Discuss] Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从A点走到D点,他想知道最少需要走多长时间 Input 输入

bzoj1857

1857: [Scoi2010]传送带 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 1487  Solved: 814[Submit][Status][Discuss] Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从A点走到D点,他想知道最少需要走多长时间 Input 输入