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

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

?? convex_hull.cpp

?? ACM凸包標程,可以快速使用凸包的各種應用
?? CPP
字號:
#include <iostream>
#include <cmath>

using namespace std;

#define EPS 1e-10

#define MAXN 1000

struct point
{
	double x, y;
	int id;
	point() {}
	point(double nx, double ny) : x(nx), y(ny) {}
	point initi() const
	{
		double l = hypot(x, y);
		return point(x / l, y / l);
	}
	point rotate(double ang) const
	{
		return point(x * cos(ang) - y * sin(ang), x * sin(ang) + y * cos(ang));
	}
};

point p[MAXN]; int pnum;

point h[MAXN]; int chn;

int bt[MAXN], tp[MAXN];
int bt_top, tp_top;

struct circle
{
	double x, y;
	double r;
	int id;
};

circle c[MAXN]; int cnum;
circle t[MAXN];

void process()
{
	int i, j, k = 0;
	for(i = 0; i < cnum; i++)
	{
		for(j = 0; j < cnum; j++)
		{
			if(i == j) continue;
			double dist = hypot(c[i].x - c[j].x, c[i].y - c[j].y);
			if(c[j].r >= c[i].r && c[j].r - c[i].r >= dist) break;
		}
		if(j == cnum && c[i].r > EPS) t[k++] = c[i];
	}
	//printf("%d\n", k);
	cnum = k;
	
	for(i = 0; i < cnum; i++)
	{
		c[i] = t[i];
		c[i].id = i;
		//printf("%lf %lf %lf\n", c[i].x, c[i].y, c[i].r);
	}
	//putchar('\n');
}

void add_point()
{
	pnum = 0;
	int i, j;
	for(i = 0; i < cnum; i++)
	{
		for(j = i + 1; j < cnum; j++)
		{
			circle c1 = c[i], c2 = c[j];
			if(c1.r < c2.r) swap(c1, c2);
			double d = hypot(c1.x - c2.x, c1.y - c2.y);
			double h = c1.r - c2.r;
			double theta = fabs(acos(h / d));
			
			point p1, p2;

			point vt, vl, vr;
			vt.x = c2.x - c1.x, vt.y = c2.y - c1.y;

			vt = vt.initi();

			vl = vt.rotate(theta), vr = vt.rotate(-theta);

			p1.x = c1.x + c1.r * vl.x;
			p1.y = c1.y + c1.r * vl.y;
			p1.id = c1.id;

			p2.x = c2.x + c2.r * vl.x;
			p2.y = c2.y + c2.r * vl.y;
			p2.id = c2.id;

			p[pnum++] = p1;
			p[pnum++] = p2;

			p1.x = c1.x + c1.r * vr.x;
			p1.y = c1.y + c1.r * vr.y;
			p1.id = c1.id;

			p2.x = c2.x + c2.r * vr.x;
			p2.y = c2.y + c2.r * vr.y;
			p2.id = c2.id;

			p[pnum++] = p1;
			p[pnum++] = p2;
		}
	}
	/*
	for(i = 0; i < pnum; i++)
	{
		printf("%lf %lf %d\n", p[i].x, p[i].y, p[i].id);
	}
	putchar('\n');
	*/
}

bool cmp(const point &p1, const point &p2)
{
	return (p1.x < p2.x) || (fabs(p1.x - p2.x) < EPS && p1.y < p2.y);
}

int dcmp(double d)
{
	if(fabs(d) < EPS) return 0;
	return d > 0 ? 1 : -1;
}

int det(double x1, double y1, double x2, double y2)
{
	return dcmp(x2 * y1 - x1 * y2);
}

int cross(point a, point b, point c)
{
	return det(b.x - a.x, b.y - a.y, c.x - b.x, c.y - b.y);
}

void convex_hull()
{
	int i;
	sort(p, p + pnum, cmp);
	bt[0] = 0, tp[0] = 0, bt[1] = 1, tp[1] = 1;
	bt_top = 1, tp_top = 1;
	for(i = 0; i < pnum; i++)
	{
		if(cross(p[bt[1]], p[0], p[i]) <= 0) bt[1] = i;
		if(cross(p[tp[1]], p[0], p[i]) >= 0) tp[1] = i;
	}
	for(i = bt[bt_top] + 1; i < pnum; i++)
	{
		while(1)
		{
			if(cross(p[bt[bt_top - 1]], p[bt[bt_top]], p[i]) >= 0) bt_top--;
			else
			{
				bt[++bt_top] = i;
				break;
			}
		}
	}
	for(i = tp[tp_top] + 1; i < pnum; i++)
	{
		while(1)
		{
			if(cross(p[tp[tp_top - 1]], p[tp[tp_top]], p[i]) <= 0) tp_top--;
			else
			{
				tp[++tp_top] = i;
				break;
			}
		}
	}
	chn = 0;
	for(i = 0; i <= bt_top; i++) h[chn++] = p[bt[i]];
	for(i = tp_top - 1; i >= 1; i--) h[chn++] = p[tp[i]];
}

void calc_total_area()
{
	h[chn] = h[0];
	double area = 0;
	int i;
	/*
	for(i = 0; i < chn; i++)
	{
		printf("%lf %lf %d\n", h[i].x, h[i].y, h[i].id);
	}
	putchar('\n');
	*/
	for(i = 0; i < chn; i++)
	{
		area += h[i].x * h[i + 1].y - h[i].y * h[i + 1].x;
	}
	area = fabs(area / 2.0);
	//printf("area = %lf\n", area);
	for(i = 0; i < chn; i++)
	{
		if(h[i].id == h[i + 1].id)
		{
			int d = h[i].id;
			point ct = point(c[d].x, c[d].y);
			int f = cross(h[i], h[i + 1], ct);
			
			double dist = hypot(h[i].x - h[i + 1].x, h[i].y - h[i + 1].y);
			double theta = fabs(2 * asin(dist / (2 * c[d].r)));

			//printf("%lf\n", theta);

			double arc_area = c[d].r * c[d].r * (theta - sin(theta)) * .5;

			if(f > 0)
			{
				//printf("YES\n");
				arc_area = M_PI * c[d].r * c[d].r - arc_area;
			}
			area += arc_area;
		}
	}
	printf("%lf\n", area);
}

int main(void)
{
	int i;
	while(scanf("%d", &cnum) != EOF)
	{
		for(i = 0; i < cnum; i++)
		{
			scanf("%lf %lf %lf", &c[i].x, &c[i].y, &c[i].r);
		}
		process();//去掉包含和半徑為0的圓
		if(cnum == 1)
		{
			printf("%lf\n", M_PI * c[0].r * c[0].r);
			continue;
		}
		add_point();
		convex_hull();
		calc_total_area();
	}
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产三级国产aⅴ无密码| 亚洲第四色夜色| 亚洲午夜私人影院| 国产成人一区在线| 欧美一区二区三区在线观看| 欧美极品xxx| 麻豆成人综合网| 色婷婷综合久久久| 欧美激情在线一区二区| 日韩成人免费看| 欧美在线一区二区| 欧美激情一区二区三区在线| 蜜桃视频在线观看一区| 欧美日韩视频专区在线播放| 中文字幕av不卡| 国产一区二区三区综合| 欧美精品1区2区3区| 亚洲综合色噜噜狠狠| 成人免费看视频| 久久午夜电影网| 日韩国产精品久久久| 欧美在线看片a免费观看| 久久久久久亚洲综合影院红桃| 亚洲成人www| 国产婷婷精品av在线| 在线影院国内精品| 色综合一个色综合亚洲| 亚洲欧美在线视频观看| 国内精品国产三级国产a久久| 3d成人动漫网站| 婷婷国产在线综合| 欧美美女一区二区| 亚洲成人久久影院| 欧美日韩国产美女| 五月天激情综合网| 51精品秘密在线观看| 日韩国产高清在线| 精品国精品国产尤物美女| 美日韩一区二区| 精品国产一区二区三区不卡| 黄色小说综合网站| 国产日产欧美一区二区三区| 国产一区二三区| 日本一区二区免费在线观看视频| 国产一区二区导航在线播放| 国产女人18毛片水真多成人如厕| 国产精品18久久久久久久久 | 中文字幕国产一区二区| 国产永久精品大片wwwapp| 久久精品水蜜桃av综合天堂| 国产精品一区二区免费不卡| 日本一区二区三区久久久久久久久不 | 在线播放国产精品二区一二区四区| 亚洲成av人片在www色猫咪| 337p亚洲精品色噜噜噜| 久久99国产精品久久99| 欧美国产一区视频在线观看| 色综合天天狠狠| 日韩av一区二区三区| 亚洲精品一区二区在线观看| 成人一区二区三区中文字幕| 亚洲天堂av一区| 欧美放荡的少妇| 国产成人精品综合在线观看| 亚洲视频一区在线| 欧美一区二区三区电影| k8久久久一区二区三区| 日韩电影在线看| 中文字幕精品三区| 3751色影院一区二区三区| 国产sm精品调教视频网站| 亚洲动漫第一页| 国产亚洲1区2区3区| 欧美日韩一级大片网址| 粉嫩高潮美女一区二区三区| 五月天激情综合| 日韩毛片精品高清免费| 久久综合一区二区| 欧美亚洲一区二区在线| 国产高清一区日本| 亚洲gay无套男同| 中文字幕在线不卡视频| 精品国免费一区二区三区| 欧美日韩小视频| jlzzjlzz亚洲日本少妇| 精品中文字幕一区二区小辣椒| 亚洲精品第1页| 国产精品乱人伦| 精品处破学生在线二十三| 欧美三片在线视频观看| 不卡电影一区二区三区| 成人动漫一区二区三区| 亚洲视频在线一区观看| 精品国产sm最大网站| 在线电影欧美成精品| 在线精品亚洲一区二区不卡| 国产一区亚洲一区| 久久国内精品自在自线400部| 一区二区欧美视频| 亚洲桃色在线一区| 欧美激情一区二区三区在线| 久久久久久久综合日本| 日韩精品一区二区三区在线 | 国产成人亚洲综合a∨婷婷图片| 亚洲国产精品久久人人爱| 亚洲欧洲在线观看av| 久久久久久麻豆| 久久综合av免费| 2023国产一二三区日本精品2022| 欧美久久久一区| 欧美精选午夜久久久乱码6080| 欧洲激情一区二区| 欧美综合天天夜夜久久| 在线观看日韩电影| 色94色欧美sute亚洲线路一ni| 成人精品鲁一区一区二区| 国产精品1区2区| 国产91丝袜在线播放九色| 国产成人综合亚洲91猫咪| 国产成人av电影在线| 国产成人午夜视频| 成人av免费在线观看| 99久久久精品| 一本久道中文字幕精品亚洲嫩| 91丨九色丨蝌蚪丨老版| 色视频一区二区| 欧美蜜桃一区二区三区| 制服丝袜在线91| 精品国产免费一区二区三区香蕉| 久久综合久久鬼色| 国产三级精品视频| 亚洲精品国产成人久久av盗摄 | 国产精品女上位| 亚洲欧美日韩系列| 亚洲h在线观看| 国内精品伊人久久久久av一坑 | 激情另类小说区图片区视频区| 国产美女一区二区| 成人av第一页| 91九色02白丝porn| 日韩三级中文字幕| 中文字幕第一区综合| 亚洲一区二区中文在线| 奇米亚洲午夜久久精品| 国产精品资源在线看| a级精品国产片在线观看| 欧美日韩免费电影| 亚洲精品一区二区在线观看| 亚洲人成网站在线| 琪琪一区二区三区| jizzjizzjizz欧美| 91精品欧美一区二区三区综合在| 久久亚洲二区三区| 夜夜精品视频一区二区| 激情综合色综合久久综合| 91农村精品一区二区在线| 欧美一区二区免费视频| 国产精品乱码一区二区三区软件 | 老司机精品视频线观看86| 九九视频精品免费| 国产成人免费网站| 欧美人狂配大交3d怪物一区| 久久久久久免费毛片精品| 亚洲欧美日韩中文播放 | 国产精品成人一区二区三区夜夜夜| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 综合婷婷亚洲小说| 久久国产麻豆精品| 91在线无精精品入口| 久久久久97国产精华液好用吗| 亚洲成年人影院| 99久久久精品免费观看国产蜜| 欧美va亚洲va在线观看蝴蝶网| 综合久久给合久久狠狠狠97色| 激情小说亚洲一区| 欧美精品一级二级| 亚洲精品国产无套在线观| 国产福利一区二区三区| 日韩一区二区视频在线观看| 亚洲女性喷水在线观看一区| 国产精品99久久久久久宅男| 欧美一级理论片| 亚洲大片在线观看| 在线观看欧美日本| 国产精品成人免费精品自在线观看 | 国产成人免费av在线| 精品久久久网站| 日韩电影在线观看电影| 欧美蜜桃一区二区三区| 亚洲一区二区四区蜜桃| 色综合久久久久| 亚洲色图清纯唯美| 91麻豆高清视频| 亚洲色图欧洲色图| 色哟哟日韩精品| 亚洲精品成人a在线观看| 91首页免费视频| 亚洲精品菠萝久久久久久久| 色婷婷av一区二区三区大白胸| 亚洲日本在线看|