P1378 油滴扩展——搜索小记
P1378 油滴扩展
记得这道题好久以前(好像是上个学期?) 就想做了,但是看着里面的半径边界好像很难处理就没做(主要是当时刚学OI(菜还给自己找借口));
今天上午一直研究SG函数,做的都自闭了,晚上想刷刷水题缓解一下心情,就又看到了这道题;
一看数据范围,原来挺简单的,还是个绿题,听着音乐开始切;
有几个坑点吧,第一他给的长方形坐标点不是左下角和右上角;
第二,求距离要开根号(也就我会忘了……);
判断时记录一下前面的圆半径就好了。
全排列。
还有
引用cmath库,开变量的时候不要用y1!!!!!!!!!
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
typedef double dd;
const dd p=3.1415926535; struct node
{
dd x,y;
}a[]; int n;
dd x1,y3,x2,y2;
int vis[],b[]; dd ans=1e9;
dd s; dd r[]; dd get_dis(int x,int y)
{
return sqrt((a[x].x-a[y].x)*(a[x].x-a[y].x)+(a[x].y-a[y].y)*(a[x].y-a[y].y));
} dd check(int x)
{
dd r_ma=1e9;
dd dis=;
for(int i=;i<x;i++)
{
dis=get_dis(b[i],b[x]);
if(dis<=r[b[i]]) return ;
r_ma=min(r_ma,dis-r[b[i]]);
}
r_ma=min(r_ma,(a[b[x]].y-y3));
r_ma=min(r_ma,(a[b[x]].x-x1));
r_ma=min(r_ma,(y2-a[b[x]].y));
r_ma=min(r_ma,(x2-a[b[x]].x));
r[b[x]]=r_ma;
return p*r_ma*r_ma;
} void dfs(int x)
{
if(x==n+)
{
dd sum=;
for(int i=;i<=n;i++)
{
sum+=check(i);
}
//printf("%lf\n",sum);
ans=min(ans,(s-sum));
return ;
} for(int i=;i<=n;i++)
{
if(!vis[i])
{
vis[i]=;
b[x]=i;
dfs(x+);
vis[i]=;
}
}
}
dd qw;
int main()
{
scanf("%d",&n);
scanf("%lf%lf%lf%lf",&x1,&y3,&x2,&y2);
if(x2<x1)
{
if(y3>y2)
{
qw=x2;x2=x1;x1=qw;
qw=y2;y2=y3;y3=qw;
}
else if(y3<y2)
{
dd xi=x2,yi=y3;
dd xj=x1,yj=y2;
x1=xi;y3=yi;x2=xj;y2=yj;
}
}
else if(y3>y2)
{
qw=y3;
y3=y2;
y2=qw;
}
s=(x2-x1)*(y2-y3); for(int i=;i<=n;i++)
{
scanf("%lf%lf",&a[i].x,&a[i].y);
}
dfs();
printf("%.0lf",ans);
return ;
}
P1378 油滴扩展——搜索小记的更多相关文章
- 洛谷P1378 油滴扩展(搜索)
洛谷P1378 油滴扩展 直接暴力搜索更新答案就可以了. 时间复杂度为 \(O(n!)\) . #include<stdio.h> #include<stdlib.h> #in ...
- 洛谷P1378 油滴扩展
P1378 油滴扩展 题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完 ...
- 洛谷 P1378 油滴扩展 改错
P1378 油滴扩展 题目描述 在一个长方形框子里,最多有\(N(0≤N≤6)\)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油 ...
- 洛谷 P1378 油滴扩展
P1378 油滴扩展 题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完 ...
- 洛谷 P1378 油滴扩展 Label:搜索
题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...
- [动态规划]P1378 油滴扩展
题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...
- 洛谷P1378油滴扩展
题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界. 必须等一个油滴扩展完毕才能放置下一个油滴 ...
- P1378 油滴扩展
题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...
- P1378 油滴扩展 dfs回溯法
题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...
随机推荐
- Sql Server 根据条件查找多条数据中最大值的详细记录
--(正常效果) select l.* from loadCurveSampling l left join Meter m on l.meter_id=m.Meter_ID --聚合当天最大值数据记 ...
- 你有自信写while(true)吗?
每次写while(true)的时候会不会心虚? 特别逻辑稍微复杂一点
- DevExtreme学习笔记(一) DataGrid中数据筛选
config.filterRow = { visible: true, applyFilter: "auto" }; config.headerFilter = { visible ...
- ZIP压缩与解压
/**//* * Gary Zhang -- cbcye@live.com * www.cbcye.com * www.quicklearn.cn * cbcye.cnblogs.com */ usi ...
- 【洛谷 P1659】 [国家集训队]拉拉队排练(manacher)
题目链接 马拉车+简单膜你 #include <cstdio> #include <cstring> #include <algorithm> using name ...
- iOS - Xcode中从动态库剥离不需要的架构
自从iOS 8发布以来,开发人员已经能够利用动态库对iOS开发的好处.对于一般开发,为所有需要的架构设置一个单一的动态库是非常好的,所以您可以在所有设备和iOS模拟器上运行,而无需更改任何东西.然而, ...
- a标签中target属性为“_blank”时存在安全问题
今天看到一个比较有意思的洞,虽然不够严重,但是却普遍存在各大src中 熟悉js的朋友都应该知道当我们在调用window下的open方法创建一个新窗口的同时,我们可以获得一个创建窗口的opener句柄, ...
- css设置图片百分比显示,最简洁的代码
css代码: .img-box { padding-bottom: 100%; } .img-box img { position: absolute; top:; bottom:; left:; r ...
- DBA面对新mysql环境
来源:http://blog.csdn.net/wyzxg/article/details/8491152 author:skatetime:2013/01/10 DBA面对新MySQL环境感悟 1. ...
- Linux 绑定 ttyUSBn 串口方法。
Linux 绑定 ttyUSBn 串口方法. 在linux下, 使用usb转串口, 经常会碰到一个问题: 如果有多个串口, 以不同顺序插入的时候, /dev/ttyUSB0 /dev/ttyUSB1的 ...