vijos p1433——火炬手之梦
生活随笔
收集整理的這篇文章主要介紹了
vijos p1433——火炬手之梦
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
描述
十八居士做的第4個夢是成為了一名火炬手。恰巧奧組委還有最后一個火炬手的名額,于是各路高手群雄逐鹿爭奪這個名額,clever的十八居士過五關斬六將,與另一高手會師決賽。裁判把他們帶到一個神秘密碼門前,只要誰先打開這個門,門里的祥云火炬就屬于誰。只見密碼門上寫著一個提示:“密碼:f(x)=sqrt((x+a)^2+b)+sqrt((x+c)^2+d)的最小值。”兩人面面相覷,怎么做啊這?于是十八居士找到了會編程的你,請你幫他解決問題。
輸入:a,b,c,d四個常數(b,d為完全平方數,0<a、b、c、d<=10000)
輸出:f(x)的最小值(保留3位小數)。
樣例1
樣例輸入1
1 1 3 4
注:即f(x)=sqrt((x+1)^2+1)+sqrt((x+3)^2+4) 樣例輸出1
3.606
注:但x=-5/3時,f(x)=sqrt(13) 可以發現密碼其實就是兩點距離公式表達的,可以得出是(x,0)到(-a,-sqrt(b))和(-c,sqrt(d))的距離和
因為a、b、c、d都是大于0的可以得出這個距離和其實就是這兩個點的距離(因為過這兩個點的直線交y軸與(m,0),m一定在這兩點之間)
直接用兩點距離公式。
?
1 #include<bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int a,b,c,d; 6 scanf("%d%d%d%d",&a,&b,&c,&d); 7 double k1=-a,k2=-sqrt(b); 8 double k3=-c,k4=sqrt(d); 9 double ans=sqrt((k1-k3)*(k1-k3)+(k2-k4)*(k2-k4)); 10 printf("%.3f",ans); 11 return 0; 12 }轉載于:https://www.cnblogs.com/937337156Zhang/p/6048888.html
總結
以上是生活随笔為你收集整理的vijos p1433——火炬手之梦的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EncryptionHelper.cs(
- 下一篇: 结对编程项目---四则运算