搜索……

PS一个坑点:r<=0时并不是舍弃这种情况,而是让r=0

(因为每个点都要放一滴油)(读题啊!)

 #include<cstdio>
#include<cstring>
#include<cmath>
#define dd double
using namespace std;
const int N=;
const dd pai=3.1415926535,INF=;
int flag[N],n;
dd xx,yy,x2,y2,x[N],y[N];
//'int y1' redeclared as different kind of symbol,保留字
dd dx[N][],dy[N][],dis[N][N],r[N],ans;
void swap(dd &a,dd &b){
dd tmp=a;
a=b;
b=tmp;
}
dd min(dd a,dd b){
return a<b?a:b;
}
dd max(dd a,dd b){
return a>b?a:b;
}
void dfs(int step,dd size){
if (step==n){
ans=max(ans,size);
return;
}
for (int i=;i<=n;i++){
if (!flag[i]){
dd len=min(dx[i][],dx[i][]);
len=min(len,min(dy[i][],dy[i][]));
for (int j=;j<=n;j++)
if (flag[j]){
dd l=dis[i][j]-r[j];
if (l>)
len=min(len,l);
else
len=;//***
}
flag[i]=;
r[i]=len;
size+=pai*r[i]*r[i];
dfs(step+,size);
flag[i]=;
size-=pai*r[i]*r[i];
}
}
}
int main(){
scanf("%d",&n);
scanf("%lf %lf %lf %lf",&xx,&yy,&x2,&y2);
for (int i=;i<=n;i++)
scanf("%lf %lf",&x[i],&y[i]);
if (xx>x2)
swap(xx,x2);
if (yy>y2)
swap(yy,y2);
for (int i=;i<=n;i++){
dx[i][]=x2-x[i];
dx[i][]=x[i]-xx;
dy[i][]=y2-y[i];
dy[i][]=y[i]-yy;
for (int j=;j<=n;j++){
int cx=x[i]-x[j];
int cy=y[i]-y[j];
dis[i][j]=sqrt(cx*cx+cy*cy);
}
}
ans=;
dfs(,);
dd s=(x2-xx)*(y2-yy)-ans;
int S=s+0.5;
printf("%d",S);
return ;
}

STD

【洛谷P1378】油滴扩展的更多相关文章

  1. 洛谷P1378 油滴扩展(搜索)

    洛谷P1378 油滴扩展 直接暴力搜索更新答案就可以了. 时间复杂度为 \(O(n!)\) . #include<stdio.h> #include<stdlib.h> #in ...

  2. 洛谷 P1378 油滴扩展 改错

    P1378 油滴扩展 题目描述 在一个长方形框子里,最多有\(N(0≤N≤6)\)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油 ...

  3. 洛谷P1378 油滴扩展

    P1378 油滴扩展 题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完 ...

  4. 洛谷 P1378 油滴扩展

    P1378 油滴扩展 题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完 ...

  5. 洛谷 P1378 油滴扩展 Label:搜索

    题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...

  6. 洛谷P1378油滴扩展

    题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界. 必须等一个油滴扩展完毕才能放置下一个油滴 ...

  7. 洛谷1378 油滴扩展 dfs进行回溯搜索

    题目链接:https://www.luogu.com.cn/problem/P1378 题目中给出矩形的长宽和一些点,可以在每个点放油滴,油滴会扩展,直到触碰到矩形的周边或者其他油滴的边缘,求出剩余面 ...

  8. P1378 油滴扩展——搜索小记

    P1378 油滴扩展 记得这道题好久以前(好像是上个学期?) 就想做了,但是看着里面的半径边界好像很难处理就没做(主要是当时刚学OI(菜还给自己找借口)): 今天上午一直研究SG函数,做的都自闭了,晚 ...

  9. [动态规划]P1378 油滴扩展

    题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...

  10. P1378 油滴扩展

    题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...

随机推荐

  1. Python基础篇【第2篇】: Python内置函数(一)

    Python内置函数 lambda lambda表达式相当于函数体为单个return语句的普通函数的匿名函数.请注意,lambda语法并没有使用return关键字.开发者可以在任何可以使用函数引用的位 ...

  2. 解决Mac下GDB提示签名错误

    http://blog.csdn.net/powerlly/article/details/30323015

  3. 框架操作DOM和原生js操作DOM比较

    问题引出 对于Angular和React操作DOM的速度,和原生js操作DOM的速度进行了一个比较: 一个同学做的demo 代码如下: <!DOCTYPE html> <html n ...

  4. Java--类的使用

    一 方法内部类        1.打开eclipse 选择你的代码存放的地方 2.新增Java项目 点击File-->New-->java project 3.添加一个包        4 ...

  5. win7出现无法连接到代理服务器的错误,不能上网的问题的解决

    今天晚上突然停电,等我打开电脑发现不然上网,用google浏览器出现这个错误: 用IE诊断错误如下: 说是不能连到代理服务器,但是我没有连接到代理服务器啊,但是我的QQ能登,就是不能用浏览器上网,经过 ...

  6. An attempt was made to load a program with an incorrect format

      用.net调用一个C++ 32位的DLL, 编译的时候选择x86, 在部署到一个64位的机器上的时候报错:"An attempt was made to load a program w ...

  7. 8.9 CSS知识点2

    4.关系选择符 包含选择符(Descendant combinator) E F  选择所有被E元素包含的F元素 <style type="text/css"> h1 ...

  8. [转] Python包和类的基本用法

    http://blog.csdn.net/liukang325/article/details/46724365 建立一个文件夹filePackage 在filePackage 文件夹内创建 __in ...

  9. Spring 依赖注入的方式

    Spring 支持3中依赖注入的方式 1.属性注入  通过setter 方法注入Bean的属性或依赖的对象. <bean id = " " class = " &q ...

  10. 【Tyvj1601】魔兽争霸(主席树,树套树)

    题意:要求在N个数的序列中支持以下操作: 1:将第X个元素加上Y 2:询问当前K大值 n<=30000,m<=50000 思路:树状数组套主席树 Tyvj又炸了,还不知道对不对 ..12] ...