题解 P1378 【油滴扩展】
题面
在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界。必须等一个油滴扩展完毕才能放置下一个油滴。那么应该按照怎样的顺序在这N个点上放置油滴,才能使放置完毕后所有油滴占据的总体积最大呢?(不同的油滴不会相互融合)
注:圆的面积公式V=pi*r*r,其中r为圆的半径。
题意
再规定的矩形内可以滴几个油滴,油滴滴的顺序不做要求,但是油滴滴的位置有要求。另外油滴滴在矩形内会一直扩展,直至碰着另一个油滴,或者撞到边界。
求矩形盒子内滴完油滴剩余的最小空间。
题解
我的思路很不好,为防误导,直接讲这题跑到\(0ms\)大神的思路和代码。
代码
#include<stdio.h>
#include<math.h>
#define PI 3.1415926
int n,vis[7];
double A[7][2],x,y,x2,y2,R[7],max,dis[7][7];
double abss(double a){return a>0.0?a:-a;}
void dfs(int step,double s)
{//准备放置第step个油滴,放置前面积为s
    int k,i;
    double r=0;//准备放置的油滴的扩散半径 
	if(step==n+1)//放完
        max=s>max?s:max;
    else
      for(k=1;k<=n;k++) if(!vis[k])
      {
          //矩形和已放置的油滴约束了r的大小
          r=abss(y2-A[k][1]);
          if(r>abss(x2-A[k][0])) r=abss(x2-A[k][0]);
          if(r>abss(y-A[k][1])) r=abss(y-A[k][1]);
          if(r>abss(x-A[k][0])) r=abss(x-A[k][0]);
          for(i=1;i<=n;i++) if(vis[i])
              if(r>dis[k][i]-R[i]) r=dis[k][i]-R[i];
          r=r<0?0:r;//注意r不能为负 
          vis[k]=1;R[k]=r;
          dfs(step+1,s+PI*r*r);
          vis[k]=0;R[k]=0.0;
	  }
}
int main(void)
{
    int i,j;
    scanf("%d%lf%lf%lf%lf",&n,&x,&y,&x2,&y2);
	for(i=1;i<=n;i++) scanf("%lf%lf",&A[i][0],&A[i][1]); 
    //预处理出油滴间距dis
    for(i=1;i<=n;i++) for(j=1;j<i;j++) if(i!=j)
        dis[i][j]=dis[j][i]=sqrt((A[i][0]-A[j][0])*(A[i][0]-A[j][0])+
            (A[i][1]-A[j][1])*(A[i][1]-A[j][1]));
    dfs(1,0.0);
    double S=abss(x-x2)*abss(y-y2);//矩形面积
    printf("%.0lf",S-max);
    return 0;
}
题解 P1378 【油滴扩展】的更多相关文章
- 洛谷 P1378 油滴扩展 改错
		P1378 油滴扩展 题目描述 在一个长方形框子里,最多有\(N(0≤N≤6)\)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油 ... 
- 洛谷P1378 油滴扩展
		P1378 油滴扩展 题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完 ... 
- 洛谷 P1378 油滴扩展
		P1378 油滴扩展 题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完 ... 
- P1378 油滴扩展——搜索小记
		P1378 油滴扩展 记得这道题好久以前(好像是上个学期?) 就想做了,但是看着里面的半径边界好像很难处理就没做(主要是当时刚学OI(菜还给自己找借口)): 今天上午一直研究SG函数,做的都自闭了,晚 ... 
- 洛谷P1378 油滴扩展(搜索)
		洛谷P1378 油滴扩展 直接暴力搜索更新答案就可以了. 时间复杂度为 \(O(n!)\) . #include<stdio.h> #include<stdlib.h> #in ... 
- [动态规划]P1378 油滴扩展
		题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ... 
- 洛谷 P1378 油滴扩展 Label:搜索
		题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ... 
- P1378 油滴扩展
		题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ... 
- P1378 油滴扩展   dfs回溯法
		题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ... 
- luogu P1378 油滴扩展
		题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ... 
随机推荐
- Spring事务内方法调用自身事务 增强的三种方式
			ServiceA.java文件: 查看Spring Tx的相关日志: 可以看到只创建了一个事物ServiceA.service方法的事务,但是callSelf方法却没有被事务增强; 分析原因:Spr ... 
- Mock session,cookie,querystring in ASB.NET MVC
			写测试用例的时候经常发现,所写的功能需要Http上下文的支持(session,cookie)这类的. 以下介绍2种应用场景. 用于控制器内Requet获取参数 控制器内的Requet其实是控制器内的属 ... 
- Redraw Beautiful Drawings(hdu4888)网络流+最大流
			Redraw Beautiful Drawings Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/O ... 
- Java - "JUC线程池" ThreadPoolExecutor原理解析
			Java多线程系列--“JUC线程池”02之 线程池原理(一) ThreadPoolExecutor简介 ThreadPoolExecutor是线程池类.对于线程池,可以通俗的将它理解为"存 ... 
- SpringCloud微服务架构第三篇
			原文链接:https://www.javazhiyin.com/5130.html 微服务开发专栏:https://www.javazhiyin.com/category/springcloud Ri ... 
- Redis-五种数据类型解析
			redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ... 
- php面向对象精要(1)
			1.静态属性与方法 每一个类的实例拥有自己的属性和方法,每一个类也可以包含静态属性,静态属性不属于类的任何实例,可以把静态属性理解成存储在类中的全局变量,可以在任何地方通过类名引用静态属性. < ... 
- JS 回调函数、立即执行、for块作用域、try/catch、let、垃圾收集  p3
			限于时间关系,加上有些倦意,简单的记录下一些要点: 1.回调函数:就你把函数当成参数传给另一个函数,这个函数在某个时间段会执行这个函数. 
- jquery判断浏览器的内核
			<script type='text/javascript'> $(function(){ if($.browser.msie) { alert("IE浏览器"); } ... 
- 安装vs2008出现MSI returned error code 1603的错误的解决
			作者:朱金灿 来源:http://blog.csdn.net/clever101 在win7 64位旗舰版上安装vs2008 ,一直停留在下面页面: 最后错误日志是: [12/12/16,15:39: ... 
