HIHO#1245 : 王胖浩与三角形
生活随笔
收集整理的這篇文章主要介紹了
HIHO#1245 : 王胖浩与三角形
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<span style="color: inherit; line-height: 1.1; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: rgb(245, 245, 245);">#1245 : 王胖浩與三角形</span>
時間限制:1000ms 單點時限:1000ms 內存限制:256MB描述
王胖浩有一個三角形,三邊長為a,b,c。他有特殊的能力,能增加三條邊的邊長,增加的總長度不能超過l。
他想通過合理地使用他的特殊能力,使得三角形的面積最大。
輸入
第一行一個整數T,表示測試數據個數。
以下T行,每行一個四個整數a,b,c,l。
數據范圍:
1<=T<=104, 1<=a,b,c<=106, 0<=l<=106
輸出
輸出T行,每行一個實數,表示三角形的面積。要求相對誤差不能超過10-9。
樣例輸入本題中,對于三角形的面積我們采用海倫--秦九韶公式。即對三角形三邊為a,b,c。其面積S可以表示為:d=(a+b+c)/2;s=sqrt(d*(d-a)*(d-b)*(d-c))那么要使得面積最大,根據題目中的意思,我們可以推導出題目中的l段必須全部用(推導過程比較簡單,只要比較一下總長度遞增時,面積的變化情況即可)。同時,還需要考慮在對各個邊進行增長時需要使得其仍是三角形。因此,可以考慮從最短的邊進行加長。編寫的代碼如下:#include<iostream> #include<math.h> using namespace std; void solve(double a,double b,double c ,double d); double area_solve(double a,double b,double c); int main(){double T=1e4;double a,b,c,d;cin>>T;for(double i=1;i<=T;i++){cin>>a>>b>>c>>d;if((a<=b)&&(b<=c))solve(a,b,c,d);else if((a<=c)&&(c<=b))solve(a,c,b,d);else if((b<=a)&&(a<=c))solve(b,a,c,d);else if((b<=c)&&(c<=a))solve(b,c,a,d);else if((c<=a)&&(a<=b))solve(c,a,b,d);elsesolve(c,b,a,d);}return 0; } void solve(double a,double b,double c ,double d){double aera2=0.0;int flag=0;double temp=b-a;if(temp<=d){a=a+temp;d=d-temp;}else{a=a+d;aera2=area_solve((double)a,(double)b,(double)c);flag=1;d=0;}if(flag==0){temp=c-b;if(d>2*temp){d=d-2*temp;a=c;b=c;double k=d;double a1=a+k/(3.0);double b1=b+k/(3.0);double c1=c+k/(3.0);aera2=area_solve(a1,b1,c1);flag=1;}else{double k=d;double a1=a+k/(2.0);double b1=b+k/(2.0);double c1=c;aera2=area_solve(a1,b1,c1);flag=1;}}if(flag==1){printf("%.11lf\n",aera2);//cout<<setprecision(10)<<aera2<<endl;} } double area_solve(double a,double b,double c){double d=(double)(a+b+c)/(2.0);double area=sqrt(d*(d-a)*(d-b)*(d-c));return area; }
題目中,需要注意的是:要求相對誤差不能超過10-9 因此,暗示我們需要將其轉化為double型進行處理。同時輸出時,要有小數位進行輸出(想吐槽一下hihocoder上對cout輸出并不友好,在代碼中可以看到我后來將cout那段隱掉了,換用了printf)。
總結
以上是生活随笔為你收集整理的HIHO#1245 : 王胖浩与三角形的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的2013年总结--北京 深圳
- 下一篇: 三维空间的三角剖分( 3D Delaun