今天的成都地區賽又悲劇了,通過這三次的地區賽,讓我深深的感覺到了我們與別的隊的差距。努力了三場,連區預賽都進不了,何況是今年的湖南省省賽呢。那麼多前面的隊伍在,讓我感受到了深深的挫敗感啊!今年想拿省賽的一等獎看來是沒有希望了,對不起郭神牛了,他的最後一次比賽不能讓他圓夢了。真是傷心啊。
今天的二分題,我很早就出思路了,只可惜一直都在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;}