洛谷 P1378 油滴扩展 改错
P1378 油滴扩展
题目描述
在一个长方形框子里,最多有\(N(0≤N≤6)\)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界。必须等一个油滴扩展完毕才能放置下一个油滴。那么应该按照怎样的顺序在这\(N\)个点上放置油滴,才能使放置完毕后所有油滴占据的总面积最大呢?(不同的油滴不会相互融合)
输入输出格式
输入格式:
第1行一个整数N。
第2行为长方形边框一个顶点及其对角顶点的坐标,\(x,y,x’,y’\)。
接下去\(N\)行,每行两个整数\(x_i,y_i\),表示盒子的\(N\)个点的坐标。
以上所有的数据都在\([-1000,1000]\)内。
输出格式:
一行,一个整数,长方形盒子剩余的最小空间(结果四舍五入输出)
爆搜一下即可,这个幽默的数据。
然而,它居然问的是最小空间!!!!
我输出了最大面积。。。。
而且样例给的最小空间居然等于最大面积,绝对故意的。。。
code:
#include <cstdio>
#include <cmath>
const int N=7;
const double pi=3.1415926;
int up,ri,le,dow,x[N],y[N],n;
double fmax(double a,double b) {return a>b?a:b;}
double fmin(double a,double b) {return a<b?a:b;}
int min(int a,int b) {return a<b?a:b;}
int abs(int a) {return a>0?a:-a;}
int used[N];
double yuan[N],ans=0,dis[N][N];//圆的半径
double get(int a,int b)
{
return sqrt((x[a]-x[b])*(x[a]-x[b])+(y[a]-y[b])*(y[a]-y[b]));
}
void init()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
dis[i][j]=get(i,j);
}
double get(int id)
{
double rm=1e300;
rm=min(min(x[id],ri-x[id]),min(y[id],up-y[id]));
for(int i=1;i<=n;i++)
if(yuan[i]!=0)
rm=fmin(dis[id][i]-yuan[i],rm);
return fmax(0.0,rm);
}
void dfs(int dep)
{
if(dep==n+1)
{
double sum=0;
for(int i=1;i<=n;i++)
sum+=yuan[i]*yuan[i]*pi;
ans=fmax(sum,ans);
return;
}
for(int i=1;i<=n;i++)
if(!used[i])
{
used[i]=1;
yuan[i]=get(i);
dfs(dep+1);
yuan[i]=0.0;
used[i]=0;
}
}
int main()
{
int x1,y1,x2,y2;
scanf("%d",&n);
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
up=abs(y1-y2),ri=abs(x1-x2);
le=min(x1,x2),dow=min(y1,y2);
for(int i=1;i<=n;i++)
{
scanf("%d%d",x+i,y+i);
x[i]-=le,y[i]-=dow;
}
init();
dfs(1);
ans=double(up*ri)-ans;
int an=int(ans+0.5);
printf("%d\n",an);
return 0;
}
2018.5.20
洛谷 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 油滴扩展 Label:搜索
题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...
- 洛谷P1378油滴扩展
题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界. 必须等一个油滴扩展完毕才能放置下一个油滴 ...
- 洛谷1378 油滴扩展 dfs进行回溯搜索
题目链接:https://www.luogu.com.cn/problem/P1378 题目中给出矩形的长宽和一些点,可以在每个点放油滴,油滴会扩展,直到触碰到矩形的周边或者其他油滴的边缘,求出剩余面 ...
- P1378 油滴扩展——搜索小记
P1378 油滴扩展 记得这道题好久以前(好像是上个学期?) 就想做了,但是看着里面的半径边界好像很难处理就没做(主要是当时刚学OI(菜还给自己找借口)): 今天上午一直研究SG函数,做的都自闭了,晚 ...
- [动态规划]P1378 油滴扩展
题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...
- P1378 油滴扩展
题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能放置下一个油滴. ...
随机推荐
- ABP从入门到精通(5):.扩展国际化语言资源
ABP的有些组件使用的该组件自带的语言包资源,所以在有些时候会因为我们当前使用的语言对应的语言包不全,而造成日志一直记录WARN.ABP给我们提供了扩展语言包资源的接口,可以解决这个问题. 以下示例代 ...
- ML.NET 示例:二元分类之垃圾短信检测
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
- Python 常用 代码片段
文件名字中含有特殊字符转成空格,因为?‘’等作为文件名是非法的.以下正则表达式进行过滤转换 newname = re.sub("[\s+\.\!\/_,$%^*(+\"\')]+| ...
- Node.js系列-express(下)
前言 距上次更新博客又两个月多了,这两个月内除了上班时间忙公司的项目外,下班后也没有闲着,做了点外包,有小程序的,管理端的项目.也可能那段时间做的外包项目也都比较急,所以晚上都搞到一点左右睡,严重的压 ...
- Python_装饰器_29
# 装饰器形成的过程 : 最简单的装饰器 有返回值的 有一个参数 万能参数 # 装饰器的作用 # 原则 :开放封闭原则 # 语法糖 :@ # 装饰器的固定模式 import time # print( ...
- pair project elevator
结对编程——电梯调度 12061181 高孟烨 12061182 郝倩 1.结对编程的优缺点: 优点:结对编程可以结合两个人各自擅长之地,充分发挥两个人各自的优势,两个人一起合作效率会更高.一份工作两 ...
- [Beta]M2事后分析
计划 你原计划的工作是否最后都做完了? 如果有没做完的,为什么? 答:没有,全部的功能没有实现.其中,界面还差两个,逻辑还差闹钟逻辑和群组逻辑,可以说这些东西是我们的核心功能之一,缺失了他们对我们整个 ...
- java计算器项目
简单的java计算器项目 题目:java计算器项目 一. 题目简介: 一个能进行加减乘除四则运算的小程序 Github链接:https://github.com/lizhenbin/test/tr ...
- 递归拼装Tree结构数据
@Override public List<Map<String, Object>> queryListTree() { List<Map<String,Objec ...
- 业务-----部门Service常用逻辑
1.org实体类 public class Org implements Serializable { private static final long serialVersionUID = 1L; ...