亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? zp1465_p.cpp

?? 一個acm題目系統會自動刪除debug和release目錄
?? CPP
字號:
//////////////////////////////////////////////////////////////////////////////////////////完成時間://耗費時間://初耗時間://注意://學習://提交次數:////////////////////////////////////////////////////////////////////////////////////////#define cin fin#include <iostream>#include <string>#include <strstream>#include <list>#include <vector>#include <algorithm>#include <math.h>#include <functional>#include <time.h>#include <stdio.h>#include <iomanip>#include <fstream>#include <iomanip>using namespace std;	#define MAX 1001#define MPN   1001//////////////////////////////////////////////////////////////////////////////////////////points management lib using integerstruct IPoint{  int x, y;  IPoint()  {	x = y = 0;  }};struct DPoint{  double x, y;  DPoint()  {	x = y = 0;  }  DPoint( const IPoint & point )  {	this->x = point.x;	this->y = point.y;  }};//求兩條直線的叉積inline int mul_cross( const IPoint & ls, const IPoint & le, const IPoint rs, const IPoint re ){  IPoint l;  l.x = le.x - ls.x;  l.y = le.y - ls.y;  IPoint r;  r.x = re.x - rs.x;  r.y = re.y - rs.y;  return l.x * r.y - r.x * l.y;}//求兩條直線的點積inline int mul_dot( const IPoint & ls, const IPoint & le, const IPoint rs, const IPoint re ){	return ( le.x - ls.x ) * ( re.x - rs.x ) + ( le.y - ls.y ) * ( re.y - rs.y );}inline int dis( const IPoint & s, const IPoint & e ){	return ( s.x - e.x ) * ( s.x - e.x ) + ( s.y - e.y ) * ( s.y - e.y );}//判斷一個點是否在一條直線內//=0:重合于頂點//<0:內部//>0:外部inline int isin( const IPoint & ls, const IPoint & le, const IPoint & point ){	return mul_dot( point, ls, point, le );}//根據角度關系進行比較//l>r :正值(表示以s為起點時l在r的右側,或者他們共線而且l里起始點更近些)//l<r:負值//l=r: 0值inline int cmp_conv( IPoint l, IPoint r, const IPoint & s ){	int cross = mul_cross( s, l, s, r );	if( cross < 0 )		return -1;	else if( cross > 0 )		return 1;	else{		cross = dis( s,l ) - dis( s,r );		if( cross < 0 )			return 1;		else if( cross >0 )			return -1;		else			return 0;	}}//對一組點進行從大到小排序(從右到左)(逆時針)void qsortp( IPoint src[MPN], int start, int end, const IPoint & s ){  if ( start >= end )	return;  int tms = start, tme = end;  IPoint tmppi = src[start];  while ( tms != tme )  {	while ( ( cmp_conv( src[tme], tmppi, s ) < 0 ) && ( tme > tms ) )	  tme--;	if ( tms < tme )	  src[tms++] = src[tme];	while ( ( cmp_conv( src[tms], tmppi, s ) >= 0 ) && ( tms < tme ) )	  tms++;	if ( tms < tme )	  src[tme] = src[tms];  }  src[tms] = tmppi;  qsortp( src, start, tms - 1, s );  qsortp( src, tms + 1, end, s );}//凸包預處理(逆時針極角排序)bool ConvSort( IPoint src[MPN], int n ){  IPoint start = src[0];  int starti = 0;  //球排序的起始點  for ( int i = 1; i < n; i++ )  {	 if ( start.y > src[i].y ){	  start = src[i];	  starti = i;	 }	else if ( start.y == src[i].y && start.x > src[i].x )	  start = src[i], starti = i;  }  src[starti] = src[0];  src[0] = start;  qsortp( src, 1, n - 1, start );  return true;}//求凸包(可對任意多邊形求凸包)//對共線點的處理: 默認保留共線點的中間點,若將所有判斷過程中的<變為<=則不保留共線點的中間點bool MakeConv( IPoint src[MPN], int & src_n, IPoint res[MPN], int & res_n,int flag ){  IPoint my_stack[MPN], tmppi;  int top = 0, tail = 1,i,thestart=1;  my_stack[0] = src[0];  my_stack[1] = src[src_n-1];  if( flag )	  goto YES;  //去除共線點用-------------------------------------------------  while( mul_cross( my_stack[tail],my_stack[top],my_stack[top],src[thestart] )==0	  && isin( my_stack[tail],src[thestart],my_stack[top] )<0 ){	  my_stack[top] = src[thestart];	  thestart++;  }  ///////////////////////////////////////////////////////////////YES:  tail = (tail+1)%MPN;  my_stack[tail] = src[thestart++];  top = ( top - 1 + MPN ) % MPN;  my_stack[top] = my_stack[tail];  if ( mul_cross( my_stack[1],my_stack[0], my_stack[1], my_stack[2] ) < 0 )  {	tmppi = my_stack[0];	my_stack[0] = my_stack[1];	my_stack[1] = tmppi;  }  res_n = 4;  for ( i = thestart; i < src_n - 1; i++ )  {	int tmp = ( top + 1 ) % MPN;	bool tag1 = false,tag2=false;	int cross = mul_cross( my_stack[top],src[i], my_stack[top], my_stack[tmp] );	while ( cross < 0 || ( cross==0 && !flag ) )	{	  top = tmp;	  tmp = ( top + 1 ) % MPN;	  tag1 = true;	  res_n--;	  cross = mul_cross( my_stack[top],src[i], my_stack[top], my_stack[tmp] );	}	tmp = ( tail - 1 + MPN ) % MPN;	cross = mul_cross( my_stack[tail], my_stack[tmp], my_stack[tail], src[i] );	while ( cross <= 0  || ( cross == 0 && !flag ) )	{	  tail = tmp;	  tmp = ( tail - 1 + MPN ) % MPN;	  tag2 = true;	  res_n--;	  cross = mul_cross( my_stack[tail], my_stack[tmp], my_stack[tail], src[i] );	}	if ( tag1||tag2 )	{	  top = ( top - 1 + MPN ) % MPN;	  my_stack[top] = src[i];	  tail = ( tail + 1 ) % MPN;	  my_stack[tail] = src[i];	  res_n+=2;	}  }  res_n--;  for ( i = 0; i < res_n; i++ )	res[i] = my_stack[( tail - i + MPN) % MPN];  return true;}//求兩直線的交點//嚴格相交:1//嚴格不相交:0//不嚴格相交:-1int GetCross( IPoint ss, IPoint se, IPoint as, IPoint ae, DPoint * res = NULL ){  int s_s, s_e, a_s, a_e, ret = 0;  s_s = cmp_conv( se, as, ss );  s_e = cmp_conv( se, ae, ss );  a_s = cmp_conv( ae, ss, as );  a_e = cmp_conv( ae, se, as );  if ( s_s * s_e < 0 && a_s * a_e < 0 )  {	ret = 1;	if ( res != NULL )	{	  res->x = ( as.x * a_e - ae.x * a_s ) / (double)( a_e - a_s );	  res->y = ( as.y * a_e - ae.y * a_s ) / (double)( a_e - a_s );	}  }  if ( s_s == 0 && isin( ss, se, as ) <= 0 )  {	ret = -1;	if ( res != NULL )	  * res = as;  }  if ( s_e == 0 && isin( ss, se, ae ) <= 0 )  {	ret = -1;	if ( res != NULL )	  * res = ae;  }  if ( a_s == 0 && isin( as, ae, ss ) <= 0 )  {	ret = -1;	if ( res != NULL )	  * res = ss;  }  if ( a_e == 0 && isin( as, ae, se ) <= 0 )  {	ret = -1;	if ( res != NULL )	  * res = ss;  }  return ret;}//判斷是否是簡單多邊形//>0:簡單多邊形//=0:復雜多邊形//<0:不是多邊形int IsSimple( IPoint src[MPN], int n ){  int i, j;  bool tag = true;  for ( i = 0; i < n - 1; i++ )  {	for ( int j = i + 2; j < n - 1; j++ )	{	  if ( GetCross( src[i], src[i + 1], src[j], src[j + 1], NULL ) != 0 )	  {		tag = false;		break;	  }	}	if ( !tag )	  break;  }  for ( j = 1; j < n - 2; j++ )  {	if ( GetCross( src[0], src[n - 1], src[j], src[j + 1], NULL ) != 0 )	{	  tag = false;	  break;	}  }  if ( n < 3 )	return -1;  else if ( tag )	return 1;  else	return 0;}//求多邊形面積double GetArea( IPoint src[MPN], int n ){  int tag = IsSimple( src, n );  if ( tag <= 0 )	return tag;  double sum = 0;  for ( int j = 0; j < n; j++ )	sum += src[j % n].x * src[( j + 1 ) % n].y - src[j % n].y * src[( j + 1 ) % n].x;  sum /= 2;  if ( sum < 0 )	sum = -sum;  return sum;}//求多邊形周長double GetPerimeter( IPoint src[MPN], int n ){  int tag = IsSimple( src, n );  if ( tag <= 0 )	return tag;  double sum = 0;  for ( int i = 0; i < n; i++ )	sum += sqrt( ( double )dis( src[i], src[( i + 1 ) % n] ) );  return sum;}inline int dbcmp( double d ){  double precision = 6e-8;  if ( d > precision )	return 1;  if ( d < -precision )	return -1;  return 0;}#define PI 3.1415926535897932384626433832795int main(){///////////////////////////////////////////////////////////////////////	clock_t start = clock();  ifstream fin("zp1465.in");	IPoint data[MPN],res[MPN];	int n,l,resn,t;	cin>>t;	for(int tt=0;tt<t;tt++){		cin>>n>>l;		if( !cin )			break;		if( tt!=0 )			cout<<endl;		for( int i=0;i<n;i++ )			cin>>data[i].x>>data[i].y;		ConvSort( data,n );		MakeConv( data,n,res,resn,false );		double result = GetPerimeter( res,resn );		for( int j=0;j<resn;j++ ){			int pre = (j-1+resn)%resn;			int sub = (j+1)%resn;			double numerator = mul_dot(res[pre],res[j],res[j],res[sub]);			double denominator = sqrt((double)dis( res[pre],res[j] )) * sqrt((double)dis( res[j],res[sub] ));			double tmp = numerator / denominator;			double rad;			if( dbcmp(tmp-1) == 0 )				rad = 0;			else				rad= acos(tmp);			if( denominator!=0 )				result +=rad *l;		}		cout<<setiosflags( ios::fixed ) << setprecision(0) <<result<<endl;	}///////////////////////////////////////////////////////////////////////	cout<<"time:"<< (clock()-start)<<endl;	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩中文国产| 国产一区二区三区黄视频| 亚洲色图都市小说| 国产校园另类小说区| 亚洲视频在线一区观看| 午夜精品一区二区三区免费视频| 日韩国产在线一| 国产jizzjizz一区二区| 91成人免费在线| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品伦一区| 日本在线播放一区二区三区| 丰满白嫩尤物一区二区| 欧美精品视频www在线观看| 国产亚洲一区字幕| 午夜影院在线观看欧美| 粉嫩绯色av一区二区在线观看 | 日韩色视频在线观看| 一区二区中文字幕在线| 日韩精品欧美成人高清一区二区| 成人高清免费观看| 日韩欧美一级特黄在线播放| 亚洲精品大片www| 丁香激情综合五月| 精品理论电影在线| 亚洲成年人影院| av不卡在线观看| 日韩午夜av电影| 亚洲大片精品永久免费| 99亚偷拍自图区亚洲| 欧美精品一二三区| 亚洲精品乱码久久久久久久久| 久久99精品久久久久久国产越南 | 日韩一区精品视频| 91国产成人在线| 中文字幕一区二区三区在线不卡| 经典三级一区二区| 欧美视频在线不卡| 亚洲午夜久久久久久久久久久 | 精品一区二区三区在线观看国产| 日韩欧美一区中文| 久久se精品一区精品二区| 91精品国产一区二区| 日韩制服丝袜av| 久久嫩草精品久久久精品| 国产精品123区| 国产精品电影院| 日本久久电影网| 天天操天天干天天综合网| 精品久久久久久久久久久久包黑料 | 精品成a人在线观看| 精品一区二区久久久| 国产欧美日韩视频在线观看| av中文一区二区三区| 一区二区三区 在线观看视频| 91成人在线精品| 热久久一区二区| 国产女主播在线一区二区| 91在线云播放| 日韩av一区二区三区| 国产欧美精品一区二区色综合 | 亚洲天天做日日做天天谢日日欢| 欧美性大战久久久久久久蜜臀| 美女爽到高潮91| 中文字幕日韩一区| 欧美一区二区三区啪啪| 大胆欧美人体老妇| 日韩电影在线免费观看| 国产欧美在线观看一区| 欧美乱熟臀69xxxxxx| 国产曰批免费观看久久久| 亚洲欧美日韩一区二区三区在线观看| 欧美精品精品一区| 成人网页在线观看| 日本 国产 欧美色综合| 亚洲美女屁股眼交| 亚洲精品在线电影| 精品视频在线免费看| 懂色中文一区二区在线播放| 日本欧美韩国一区三区| 亚洲日穴在线视频| 国产欧美视频一区二区| 日韩视频一区二区三区| 色吊一区二区三区| 国产成a人亚洲精| 奇米888四色在线精品| 亚洲欧美福利一区二区| 国产日韩影视精品| 日韩一区二区在线免费观看| 91老师片黄在线观看| 国产成人一区二区精品非洲| 奇米影视在线99精品| 亚洲自拍偷拍麻豆| 国产精品久久久久久久久久免费看| 精品美女被调教视频大全网站| 欧美精三区欧美精三区| 日本韩国欧美一区| 一本高清dvd不卡在线观看| 成人毛片老司机大片| 久久99在线观看| 人人爽香蕉精品| 日本午夜一本久久久综合| 亚洲图片自拍偷拍| 亚洲精品老司机| 亚洲欧美日韩国产手机在线 | 26uuu久久天堂性欧美| 5566中文字幕一区二区电影| 91久久免费观看| 91视频一区二区三区| 91在线视频免费观看| 成人动漫一区二区三区| 99久久精品免费观看| 99热这里都是精品| 99久久精品一区二区| 99久久久久久99| 91在线观看一区二区| youjizz国产精品| 99免费精品视频| 色综合天天综合网天天狠天天| av电影天堂一区二区在线| 不卡欧美aaaaa| 91蜜桃视频在线| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 色婷婷亚洲一区二区三区| 欧美在线观看视频一区二区| 欧美日韩美少妇| 精品入口麻豆88视频| 久久在线观看免费| 久久精品一级爱片| 中文字幕在线观看不卡| 一区二区三区欧美视频| 午夜日韩在线观看| 久久99久久久久| 成人免费看视频| 色综合久久久久综合体桃花网| 欧美探花视频资源| 91精品国产综合久久久久| 久久尤物电影视频在线观看| 国产欧美日产一区| 一区二区高清在线| 免费欧美日韩国产三级电影| 国产精品18久久久久| 捆绑调教美女网站视频一区| 亚洲国产综合视频在线观看| 三级久久三级久久| 国产一区二区三区观看| 99久久精品费精品国产一区二区 | kk眼镜猥琐国模调教系列一区二区 | 欧美三级电影在线看| 欧美成人精品1314www| 中文字幕不卡在线播放| 亚洲国产美女搞黄色| 久久er99精品| 色欧美88888久久久久久影院| 3751色影院一区二区三区| 久久久久国产免费免费| 亚洲国产精品嫩草影院| 国产老肥熟一区二区三区| 色成人在线视频| 久久网站最新地址| 亚洲在线视频网站| 国产精品一二三在| 欧美精品一二三| 亚洲色图视频网站| 韩日av一区二区| 欧亚一区二区三区| 国产精品国产三级国产普通话三级| 午夜私人影院久久久久| 99久久伊人精品| 久久影院午夜论| 日韩电影在线一区二区三区| 99久久99久久免费精品蜜臀| 欧美成人女星排行榜| 亚洲成人黄色小说| 91美女在线视频| 国产欧美日本一区视频| 激情深爱一区二区| 欧美一区永久视频免费观看| 亚洲另类在线视频| 成人免费高清在线观看| 精品国产伦理网| 男人的天堂久久精品| 欧美亚洲国产一卡| 亚洲人成网站精品片在线观看| 国产成人精品免费视频网站| 日韩精品一区二| 老司机精品视频导航| 在线播放一区二区三区| 亚洲一区av在线| 色婷婷av一区二区三区软件| 亚洲欧洲国产专区| 国产成人精品亚洲午夜麻豆| 久久午夜国产精品| 国产原创一区二区| 精品国产一区二区亚洲人成毛片| 视频一区二区三区在线| 在线观看av一区| 亚洲成人福利片| 日韩一级完整毛片| 另类小说综合欧美亚洲|