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)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...
随机推荐
- 1.ASP.NET Core介绍
优点: 1.跨平台,高性能,开源,运行在.Net Core 或.Net Framework框架上(asp.net core 3.0及以后只支持.Net Core). 2.各平台上开发工具支持,能够开发 ...
- 查看font字体文件
url: http://bluejamesbond.github.io/CharacterMap/ 打开网址后,如下图操作
- cocoaPods升级遇到的问题 升级ruby 升级cocoaPos
最近重复了一次,修复一些更改. 1.查询 rvm版本rvm -v 2.查询ruby版本ruby -v 3.查询 gem 版本gem -v 4.查询ruby 镜像gem sources -l 5.升级r ...
- SQL----EXISTS 关键字
转自:http://blog.sina.com.cn/s/blog_65dbc6df0100mvfx.html 1.EXISTS基本意思 英语解释就是存在,不过他的意思也差不多,相当于存在量词'З'. ...
- ssh修改端口
安装防火墙 sudo yum -y install firewald sudo systemctl start firewald.service sudo firewall-cmd --list-al ...
- 尚硅谷MySQL基础学习笔记
目录 写在前面 MySQL引入 数据库的好处 数据库的相关概念 数据库存储数据的特点 MySQL服务的启动和停止 MySQL服务端的登录和退出 MySQL的常用命令 MySQL语法规范 DQL(Dat ...
- MySQL Backup--Xtrabackup远程备份和限速备份
使用xbstream 备份到远程服务器 ##xbstream 备份到远程服务器 innobackupex \ --defaults-file="/export/servers/mysql/e ...
- 主流WEB服务器大对比(Apache,Nginx,Lighttpd)
一.软件介绍(apache lighttpd nginx) 1. lighttpd Lighttpd 是一个具有非常低的内存开销, cpu 占用率低,效能好,以及丰富的模块等特点. lightt ...
- p4.BTC-实现
比特币是基于 transaction-based ledger.(隐私保护性很好,但是在转账中需要说明币的来源,比较麻烦) 比特币的全节点需要维护一个UTXO的数据结构(unspent transac ...
- 虚拟机搭建IKUAI软路由
1.登录爱快软路由的官网下载镜像(支持ISO ,GHO),这里采用iso安装 2.选择好后开机(选择数字编号1,回车) 3.输入“y”回车,程序自动安装 4.安装成功后如图 5.设置IP 6.绑定网卡 ...