搜索……

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类属性,实例属性

    1.Python类数据属性:定义在类里面但在函数外面的变量,它们都是静态的. #一段很简单的代码,但反应了很多 >>> class A(): a=1 #一个类里面有个属性a > ...

  2. Ubuntu 安装 Xfce4 桌面

    sudo apt-get install xubuntu-desktop From: http://tieba.baidu.com/p/294762291

  3. Windows 下动态链接库和静态链接库

    1.静态链接库:就是在编译的时候把库中代码复制进工程中,导致工程变大,但是速度快. 缺点在于一套代码可能在内存中有多份拷贝,占用内存. 2.动态链接库:库由windos api加载库代码,内存中只有一 ...

  4. 华为OJ题目:扑克牌大小

    题目描述: 扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A.2各4张,小王1张,大王1张.牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):3  ...

  5. javascript 自调用函数 闭包

    <script type="text/javascript"> var car = {name:"lhs",model:500}; window.o ...

  6. shell_基础知识

    参考: http://blog.csdn.net/kaizi318/article/details/9343551 开头程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh符号#!用来告 ...

  7. bootstrap分页插件--Bootstrap Paginator的使用&AJAX版备份(可单独使用)

    html部分: <ul class="pagination"></ul> <!--bootstrap3版本用ul包裹--> <div cl ...

  8. {CSDN}{英雄会}{火车调度}

    思路: 给定一系列时刻表,求能满足各个时刻的最小火车数量. 打眼一看, 把此题归入到最大流,仔细一想不符合流网络的规律,换思路. 由于是一个最优化问题,自然想到动态规划和贪心. 最后确定贪心.从最早出 ...

  9. LINUX内核分析第八周学习总结:进程的切换和系统的一般执行过程

    韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.进程切换的关 ...

  10. urllib.request

    [urllib.request] 1.urlopen结果保存在内存. 2.ulrretrieve结果保存到文件. 3.response有read方法. 4.可以创建Request对象. 5.发送Pos ...