首頁 資料庫 mysql教程 URAL 1348. Goat in the Garden 2[求点到线段的距离]

URAL 1348. Goat in the Garden 2[求点到线段的距离]

Jun 07, 2016 pm 03:13 PM
goat the

题目链接:http://acm.timus.ru/problem.aspx?space=1num=1348 题目的意思是:求一个点到线段的最短距离和最长距离。。 最长距离比较容易,就是求点到线段两个端点较长的那个距离就是ans。 最短距离就比较有意思了。。。 可能的情况就是点到线段的垂线的垂足

题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1348

题目的意思是:求一个点到线段的最短距离和最长距离。。

最长距离比较容易,就是求点到线段两个端点较长的那个距离就是ans。

最短距离就比较有意思了。。。

可能的情况就是点到线段的垂线的垂足在线段内,还有就是垂足在线段外。。。

在线段内的话,那么应用叉积求面积+底面长度可以求得垂线长度也就是最短距离。。

如果在线段外的话,最短距离就是点到线段的两个端点的最小值。。

那么问题就来了。。怎么判断垂足在线段内还是在线段外的呢??

详细见代码。 - - 。。。

Code:

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;

const double eps = 1e-8;
const double pi = acos(-1);
//点
struct POINT
{
    double x, y;
    POINT(){ }
    POINT(double a, double b){
        x = a;
        y = b;
    }
};
//线段
struct Seg
{
    POINT a, b;
    Seg() { }
    Seg(POINT x, POINT y){
        a = x;
        b = y;
    }
};

//直线
struct Line
{
    POINT a, b;
    Line() {}
    Line(POINT x, POINT y){
        a = x;
        b = y;
    }
};

//叉乘
double cross(POINT o, POINT a, POINT b)
{
    return (a.x - o.x) * (b.y - o.y) - (b.x - o.x) * (a.y - o.y);
}

//求两点间的距离
double dis(POINT a, POINT b)
{
    return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
Seg s;
POINT p;
double L;
//点到直线的距离..
double PointToLine(POINT p, Line l)
{
    return fabs(cross(p, l.a, l.b)) / dis(l.a, l.b);
}
//线段到直线的距离..
double PointToSeg(POINT p, Seg s)
{
    POINT tmp = p;
    tmp.x += s.a.y - s.b.y;
    tmp.y += s.b.x - s.a.x;
    if(cross(s.a, p, tmp) * cross(s.b, p, tmp) >= 0){
        return min(dis(p, s.a), dis(p, s.b));
    }
    return PointToLine(p, Line(s.a, s.b));
}

void solve()
{
    double ans1 = PointToSeg(p, s), ans2 = max(dis(p, s.a), dis(p, s.b));
    printf("%.2lf\n%.2lf\n", ans1 > L ? ans1 - L : 0, ans2 > L ? ans2 - L : 0);
    return ;
}

int main()
{
//    freopen("11.txt", "r", stdin);
    while(~scanf("%lf %lf %lf %lf", &s.a.x, &s.a.y, &s.b.x, &s.b.y)){
        scanf("%lf %lf %lf", &p.x, &p.y, &L);
        solve();
    }
    return 0;
}</cmath></cstring></cstdio></algorithm></iostream>
登入後複製

--->

好吧,还需要好好的学习。。。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

2 個月不見,人形機器人 Walker S 會摺衣服了 2 個月不見,人形機器人 Walker S 會摺衣服了 Apr 03, 2024 am 08:01 AM

機器之能報道編輯:吳昕國內版的人形機器人+大模型組隊,首次完成疊衣服這類複雜柔性材料的操作任務。隨著融合了OpenAI多模態大模型的Figure01揭開神秘面紗,國內同行的相關進展一直備受關注。就在昨天,國內"人形機器人第一股"優必選發布了人形機器人WalkerS深入融合百度文心大模型後的首個Demo,展示了一些有趣的新功能。現在,得到百度文心大模型能力加持的WalkerS是這個樣子的。和Figure01一樣,WalkerS沒有走動,而是站在桌子後面完成一系列任務。它可以聽從人類的命令,折疊衣物

THE是什麼幣種,THE幣值得投資嗎? THE是什麼幣種,THE幣值得投資嗎? Feb 21, 2024 pm 03:49 PM

THE是什麼幣種?THE(TokenizedHealthcareEcosystem)是一種數位貨幣,利用區塊鏈技術,專注於醫療健康產業的創新和改革。 THE幣的使命是利用區塊鏈技術來提高醫療產業的效率和透明度,推動各方之間更有效率的合作,包括病患、醫護人員、製藥公司和醫療機構。 THE幣的價值和特徵首先,THE幣作為一種數位貨幣,具備了區塊鏈的優勢——去中心化、安全性高、交易透明等,讓參與者能夠信任和依賴這個系統。其次,THE幣的獨特之處在於它專注於醫療健康產業,並藉助區塊鏈技術改造了傳統醫療體系,提升了

新加坡發布AI算數模型Goat,能力居於GPT-4之上 新加坡發布AI算數模型Goat,能力居於GPT-4之上 Jun 07, 2023 pm 05:24 PM

DoNews6月7日消息,當下GPT-4模型最大的短板主要是算術能力,由於模型的邏輯推理能力尚待提升,因此即使是許多人認為相對簡單的計算問題,GPT-4卻無法得出正確的結果。根據IT之家報道,近日,新加坡國立大學研究者推出了Goat模型,稱該模型「專門用於算術問題」。研究人員表示「在LLaMA模型進行微調後,Goat在算數上實現了比GPT-4更高的準確度與更出色的性能」。研究人員提出了一種新方法,將任務根據算數的可學習型進行分類,然後利用基本算術原理將不可學習的任務分解為一系列可以學習的任務(I

如何查詢The Sandbox幣最新價格? 如何查詢The Sandbox幣最新價格? Mar 05, 2024 am 11:52 AM

如何查詢TheSandbox幣最新價格TheSandbox是建立在以太坊區塊鏈上的去中心化遊戲平台,使用其原生代幣SAND可以購買土地、資產和遊戲體驗。想要查詢SAND最新價格的步驟如下:選擇一個可靠的價格查詢網站或應用程式。一些常用的價格查詢網站包括:CoinMarketCap:https://coinmarketcap.com/Coindesk:https://www.coindesk.com/幣安:https://www.binance.com/在網站或應用程式中搜尋SAND。查看SAND

如何查詢The Graph幣最新價格? 如何查詢The Graph幣最新價格? Mar 05, 2024 am 09:55 AM

如何查詢TheGraph幣最新價格? TheGraph是一個去中心化的協議,旨在為區塊鏈資料提供高效的索引和查詢服務。該協議的設計使得開發人員能夠更輕鬆地建立和推出分散式應用程式(dApp),並讓這些應用程式能夠方便地存取區塊鏈資料。要查詢TheGraph幣(GRT)的最新價格,您可以按照以下步驟操作:選擇一個可靠的價格查詢網站或應用程式。一些常用的價格查詢網站包括:CoinMarketCap:https://coinmarketcap.com/Coindesk:https://www.coind

三星折疊螢幕新品曝光 預計 7 月下旬亮相 三星折疊螢幕新品曝光 預計 7 月下旬亮相 Mar 21, 2024 pm 02:16 PM

三星計劃在今年下半年推出新一代GalaxyZFold與Flip6系列折疊螢幕智慧型手機。近期,韓國媒體TheElec和《時事周刊e》透露了關於這兩款新品的更多細節。三星GalazyZFold6爆料圖片。圖源@chunvn8888根據TheElec報道,三星電子的供應鏈廠商預計於5月初啟動GalaxyZFold6和Flip6相關組件的生產工作,相較之下,去年GalaxyZFold5和Flip5的零件生產始於5月下半月。這意味著今年的標準版GalaxyZ系列發佈時間表相較於上年提前了約兩週至三週的時間。去

如何查看The Graph幣市值? 如何查看The Graph幣市值? Mar 13, 2024 pm 10:43 PM

如何查看TheGraph幣市值TheGraph是一種去中心化的協議,旨在幫助開發者索引和查詢區塊鏈資料。其代幣GRT被用於支付網路費用和獎勵節點營運商。查看TheGraph幣市值的方法:選擇一個可靠的網站或平台:有多個網站和平台提供加密貨幣市值信息,例如CoinMarketCap、CoinGecko、非小號等。選擇一個可靠的網站或平台很重要,以確保您獲得準確的資訊。搜尋TheGraph:在網站或平台上搜尋GRT或TheGraph。查看市值:TheGraph的市值通常會在搜尋結果中顯示。提示:市值

羅技企業桌面配置白皮書 羅技企業桌面配置白皮書 Jul 24, 2024 pm 01:54 PM

最近读了罗技在上半年出品的企业桌面配置白皮书,涉及到的企业级桌面外设的知识面和选购逻辑,给了我们非常多的启发。其中许多新鲜的观点,非常适合与中关村的老粉们分享。罗技白皮书:桌面外设采购新思考罗技作为桌面外设领域的佼佼者,其品牌实力和技术创新有目共睹。白皮书发布时间的意义罗技白皮书的发布时机恰逢企业办公模式转型之际。混合办公模式的普及对雇主品牌和人才吸引提出了新挑战。桌面外设采购新趋势以往的桌面外设采购标准可能过于简化。不同岗位员工对键盘、鼠标、耳机和摄像头的需求差异显著。罗技白皮书中的观点罗技白

See all articles