HDOJ 4033 二分

來源:互聯網
上載者:User

今天的成都地區賽又悲劇了,通過這三次的地區賽,讓我深深的感覺到了我們與別的隊的差距。努力了三場,連區預賽都進不了,何況是今年的湖南省省賽呢。那麼多前面的隊伍在,讓我感受到了深深的挫敗感啊!今年想拿省賽的一等獎看來是沒有希望了,對不起郭神牛了,他的最後一次比賽不能讓他圓夢了。真是傷心啊。

今天的二分題,我很早就出思路了,只可惜一直都在WA,不然的話成績會好很多吧。兩個小時能做出3個題的。後面兩個小時大家加把油,4個題還是可以的。可惜了。我的1003這個程式直到比賽最後也沒有弄出來,比賽的最後一次提交沒有交上去,否則這個題還是可以過的。所以以後千萬不能喪失信心,要奮戰到底不罷休!!

這個題用二分,二分邊長,然後會得出內角和。內角和為二分的標準。就是這樣。不過我的二分還是有很多漏洞,對於impossible的情況判斷簡直是2B了!卡死卡死卡死!!最後面的2PI和內角和的判斷沒有想到竟然是這種情況,可能是acos的得精度問題吧!邊的精度和角的精度不一樣,卡死卡死了!


#include<iostream>#include<cmath>#define PI acos(-1.0)#define eps 1e-6#define MAXN 101using namespace std;int main(){    int index=1;    double date[101];    int T,n;    scanf( "%d",&T );    while( T-- )    {           int i;           int cnt=0;           memset( date,0,sizeof(date) );           double max,min;           min=100000000000ll;           max=0;           scanf( "%d",&n );           for( i=0;i<n;i++ )           {                    scanf( "%lf",&date[i] );                if( date[i]==0 )                    date[i]=eps/10;           }           for( i=0;i<n;i++ )           {                if( max<fabs( date[i]-date[(i+1+n)%n]) )                    max=fabs( date[i]-date[(i+1+n)%n]);                if( min>date[i]+date[(i+1+n)%n] )                    min=date[i]+date[(i+1+n)%n];           }            //printf( "min:%lf max:%lf\n",min,max );           double L=max;           double R=min;           if( L>R )           {               printf( "Case %d: impossible\n",index++ );               continue;           }           double m;           double arc=0;           while( !(fabs(R-L)<eps) )           {                  m=(L+R)/2;                  arc=0;                  for( i=0;i<n;i++ )                        arc+=acos( (date[i]*date[i]+date[(i+1)%n]*date[(i+1)%n]-m*m)/(2*date[i]*date[(i+1)%n]) );                  if( arc>=2*PI ) R=m;                  else L=m;           }           //printf( "%lf\n",arc );           //printf( "%lf\n",2*PI );           if( fabs(arc-2*PI)<eps*10 )               printf( "Case %d: %.3lf\n",index++,m );           else               printf( "Case %d: impossible\n",index++ );    }    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.