洛谷 P1378 油滴扩展

本题可以利用dfs计算,重点是计算某一个油滴可以扩展的半径,并搜索得出所有油滴可以扩展的最大面积。

由题意可知:(1):油滴的半径不能越过长方形方框的边界

                        (2):判断当前油滴与其他油滴的关系:是否位于其他油滴内,最多只能与其他                                油滴相交

#include
using namespace std;
#define pi 3.1415926
int n;
int xa,ya,xb,yb;
struct node{
	int x,y;
	double r;
}nod[15];
int vis[10];
double maxs=0;
double cal(int i){
    //计算当前点距离长方形边框的最小值
	double r1=min(abs(nod[i].x-xa),abs(nod[i].x-xb));
	double r2=min(abs(nod[i].y-ya),abs(nod[i].y-yb));
	double r=min(r1,r2);
	for(int j=1;j<=n;j++){
		if(i!=j&&vis[j]){
			double d=sqrt(pow(nod[i].x-nod[j].x,2)+pow(nod[i].y-nod[j].y,2));
			double dis=d-nod[j].r;
			if(dis<=0) r=0.0;//点与圆的位置关系:如果d

你可能感兴趣的:(算法)