• upc 9519 New Game


    New Game

    时间限制: 1 Sec  内存限制: 128 MB  Special Judge
    提交: 157  解决: 53
    [提交] [状态] [讨论版] [命题人:admin]

    题目描述

    Eagle Jump公司正在开发一款新的游戏。泷本一二三作为其员工,获得了提前试玩的机会。现在她正在试图通过一个迷宫。

    这个迷宫有一些特点。为了方便描述,我们对这个迷宫建立平面直角坐标系。迷宫中有两条平行直线 L1:Ax+By+C1=0,L2:Ax+By+C2=0,还有 n 个圆 。角色在直线上、圆上、圆内行走不消耗体力。在其他位置上由S点走到T点消耗的体力为S和T的欧几里得距离。

    泷本一二三想从L1出发,走到L2。请计算最少需要多少体力。

    输入

    第一行五个正整数n,A,B,C1,C2(1≤n≤1000,−10000≤A,B,C1,C2≤10000),其中A,B 不同时为 0。
    接下来 n 行每行三个整数x,y,r(−10000≤x,y≤10000,1≤r≤10000) 表示一个圆心为 (x,y),半径为 r 的圆。

    输出

    仅一行一个实数表示答案。与标准答案的绝对误差或者相对误差不超过10-4即算正确。

    样例输入

    2 0 1 0 -4
    0 1 1
    1 3 1
    

    样例输出

    0.236068

    题意

    给一些圆和两个平行线,在圆内、圆上和线上走不消耗体力,其它消耗的体力为两点之间的几何距离。

    分析

    看出来是最短路就很简单了,直接建图跑最短路就可以了。

    ///  author:Kissheart  ///
    #include<stdio.h>
    #include<algorithm>
    #include<iostream>
    #include<string.h>
    #include<vector>
    #include<stdlib.h>
    #include<math.h>
    #include<queue>
    #include<deque>
    #include<ctype.h>
    #include<map>
    #include<set>
    #include<stack>
    #include<string>
    #define INF 0x3f3f3f3f
    #define FAST_IO ios::sync_with_stdio(false)
    const double PI = acos(-1.0);
    const double eps = 1e-6;
    const int MAX=1e5+10;
    const int mod=1e9+7;
    typedef long long ll;
    using namespace std;
    #define gcd(a,b) __gcd(a,b)
    inline ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
    inline ll qpow(ll a,ll b){ll r=1,t=a; while(b){if(b&1)r=(r*t)%mod;b>>=1;t=(t*t)%mod;}return r;}
    inline ll inv1(ll b){return qpow(b,mod-2);}
    inline ll exgcd(ll a,ll b,ll &x,ll &y){if(!b){x=1;y=0;return a;}ll r=exgcd(b,a%b,y,x);y-=(a/b)*x;return r;}
    inline ll read(){ll x=0,f=1;char c=getchar();for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;for(;isdigit(c);c=getchar()) x=x*10+c-'0';return x*f;}
    //freopen( "in.txt" , "r" , stdin );
    //freopen( "data.txt" , "w" , stdout );
    ll p1,p2;
    ll q1,q2;
    ll a,b,c;
    int main()
    {
        int flag=0;
        scanf("%lld%lld%lld",&a,&b,&c);
        scanf("%lld%lld%lld%lld",&p1,&p2,&q1,&q2);
        ll ans=1e18,x,y;
        for(ll i=-1e5;i<=MAX;i++)
        {
            if((c-a*i)%b==0)
            {
                x=i;
                y=(c-a*i)/b;
                flag=1;
                ans=min(ans,p2*x*x+p1*x+q2*y*y+q1*y);
            }
        }
    
        if(flag) printf("%lld
    ",ans);
        else printf("Kuon
    ");
    
        return 0;
    }
    View Code

     

  • 相关阅读:
    ADO.NET 2.调用存储过程
    Resharper上手指南
    获取HTML源码(只取文字,判断编码,过滤标签)
    .net(c#) winform文本框只能输入数字,不能其他非法字符(转)
    ADO.NET – 3.书籍管理系统详解
    GemBox.ExcelLite.dll导出到Excel
    C#4.0图解教程 第7章 类和继承
    C#读取网站HTML内容
    C#回顾 – 1.IO文件操作
    Javascript s10 (Jquery相关手册整合及功能实现)
  • 原文地址:https://www.cnblogs.com/Kissheart/p/9751057.html
Copyright © 2020-2023  润新知