2474 - Balloons in a Box

题目连接:

https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=99999999&page=show_problem&category=36&problem=475&mosmsg=Submission+received+with+ID+1967446

Description

You must write a program that simulates placing spherical balloons into a rectangular box.

The simulation scenario is as follows. Imagine that you are given a rectangular box and a set of

points. Each point represents a position where you might place a balloon. To place a balloon at a

point, center it at the point and inflate the balloon until it touches a side of the box or a previously

placed balloon. You may not use a point that is outside the box or inside a previously placed balloon.

However, you may use the points in any order you like, and you need not use every point. Your objective

is to place balloons in the box in an order that maximizes the total volume occupied by the balloons.

You are required to calculate the volume within the box that is not enclosed by the balloons.

Input

The input consists of several test cases. The first line of each test case contains a single integer n

that indicates the number of points in the set (1 ≤ n ≤ 6). The second line contains three integers

that represent the (x, y, z) integer coordinates of a corner of the box, and the third line contains the

(x, y, z) integer coordinates of the opposite corner of the box. The next n lines of the test case contain

three integers each, representing the (x, y, z) coordinates of the points in the set. The box has non-zero

length in each dimension and its sides are parallel to the coordinate axes.

The input is terminated by the number zero on a line by itself.

Output

For each test case print one line of output consisting of the test case number followed by the volume of

the box not occupied by balloons. Round the volume to the nearest integer. Follow the format in the

sample output given below.

Place a blank line after the output of each test case.

Sample Input

2

0 0 0

10 10 10

3 3 3

7 7 7

0

Sample Output

Box 1: 774

Hint

题意

将n个气球放到一个长方体盒子里面, 然后气球会一直膨胀, 直到碰到盒壁或者其他气球. 先要求你找到一个放气球的顺序, 使得最后最后气球占据的体积最大.

数据规模: 1≤n≤6

题解:

直接爆搜就好了,数据范围很小……

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 10;
const double eps = 1e-8;
const double pi = acos(-1.0);
double sqr(double x)
{
return x*x;
}
double dis(double x1,double y11,double z1,double x2,double y2,double z2)
{
return sqrt(sqr(x1-x2)+sqr(y11-y2)+sqr(z1-z2));
}
int n;
double x[maxn],y[maxn],z[maxn],ans,r[maxn];
int vis[maxn],u[maxn],cas;
double x1,y11,z1,x2,y2,z2,a,b,c;
void QAQ()
{
memset(vis,0,sizeof(vis));
}
void dfs(int cnt,double v)
{
if(cnt>=n){
ans=min(ans,v);
return;
}
for(int i=0;i<n;i++){
if(vis[i])continue;
vis[i]=1,u[cnt]=i;
r[cnt]=min(x[i],a-x[i]);
r[cnt]=min(r[cnt],min(y[i],b-y[i]));
r[cnt]=min(r[cnt],min(z[i],c-z[i]));
for(int j=0;j<cnt;j++){
double d = dis(x[i],y[i],z[i],x[u[j]],y[u[j]],z[u[j]]);
r[cnt]=min(r[cnt],d-r[j]);
}
r[cnt]=max(r[cnt],0.0);
dfs(cnt+1,v-4.0/3.0*pi*r[cnt]*r[cnt]*r[cnt]);
vis[i]=0;
}
}
void TAT()
{
cas++;
scanf("%lf%lf%lf%lf%lf%lf",&x1,&y11,&z1,&x2,&y2,&z2);
a=fabs(x1-x2),b=fabs(y11-y2),c=fabs(z1-z2);
x1=min(x1,x2),y11=min(y11,y2),z1=min(z1,z2);
for(int i=0;i<n;i++){
scanf("%lf%lf%lf",&x[i],&y[i],&z[i]);
x[i]-=x1,y[i]-=y11,z[i]-=z1;
}
ans=a*b*c;
dfs(0,a*b*c);
printf("Box %d: %.0f\n\n",cas,round(ans+eps));
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
if(n==0)break;
QAQ();
TAT();
}
}

UVA 2474 - Balloons in a Box 爆搜的更多相关文章

  1. UVALive 2474 Balloons in a Box(枚举)

    https://vjudge.net/contest/277824#problem/A 尤其是模拟题,三思而后敲!!! 纠错了好久,主要还是没有处理好:单点若还未放气球,其他气球可以膨胀越过它(即可以 ...

  2. 【BZOJ-1853&2393】幸运数字&Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 1817  Solved: 665[Submit][Status] ...

  3. POJ 1166 The Clocks (爆搜 || 高斯消元)

    题目链接 题意: 输入提供9个钟表的位置(钟表的位置只能是0点.3点.6点.9点,分别用0.1.2.3)表示.而题目又提供了9的步骤表示可以用来调正钟的位置,例如1 ABDE表示此步可以在第一.二.四 ...

  4. 【 POJ - 1204 Word Puzzles】(Trie+爆搜|AC自动机)

    Word Puzzles Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 10782 Accepted: 4076 Special ...

  5. hdu5323 Solve this interesting problem(爆搜)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Solve this interesting problem Time Limit ...

  6. hdu4536-XCOM Enemy Unknown(爆搜)

    XCOM-Enemy Unknown是一款很好玩很经典的策略游戏. 在游戏中,由于未知的敌人--外星人入侵,你团结了世界各大国家进行抵抗.随着游戏进展,会有很多的外星人进攻事件.每次进攻外星人会选择3 ...

  7. poj1077 Eight【爆搜+Hash(脸题-_-b)】

    转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4298840.html   ---by 墨染之樱花 题目链接:http://poj.org/pr ...

  8. [NOIP2015] 斗地主 大爆搜

    考试的时候想了半天,实在是想不到解决的办法,感觉只能暴力..然后暴力也懒得打了,小数据模拟骗30分hhh 然而正解真的是暴力..大爆搜.. 然后我的内心拒绝改这道题(TAT) 不过在wcx大佬的帮助下 ...

  9. BZOJ 1207: [HNOI2004]打鼹鼠【妥妥的n^2爆搜,dp】

    1207: [HNOI2004]打鼹鼠 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3259  Solved: 1564[Submit][Statu ...

随机推荐

  1. zookeeper zkClient api 使用

    操作步骤: 一.引入zkclient的jar包(maven方式) <dependency> <groupId>com.101tec</groupId> <ar ...

  2. Linux 查看内存插槽数、最大容量的方法

    查看内存插槽数: dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range 查看最大容量: dmidecode ...

  3. 用Qemu模拟vexpress-a9 (一) --- 搭建Linux kernel调试环境【转】

    转自:http://www.cnblogs.com/pengdonglin137/p/5023342.html#_label2 阅读目录(Content) 环境介绍: 下载Linux内核 安装arm的 ...

  4. 打开mvc项目无法运行,报"Unable to launch the IIS Express Web server"

    今天遇到一个问题,打开asp.net mvc 项目,右击浏览器运行,无法运行... 提示下面错误, 解决方案: 删除项目文件夹下的 .vs 文件夹,然后重新打开项目运行即可 参考:http://www ...

  5. java基础65 JavaScript中的Window对象(网页知识)

    1.javaScript组成部分 1.EMCAScript(基本语法)    2.BOM(Browser Object Model):浏览器对象模型            浏览器对象模型中的浏览器的各 ...

  6. git —— 基本命令以及操作(No.1)

    git基本命令(附加描述) 1.把文件添加到暂存区$ git add readme.txt 2.把暂存区的文件文件添加到仓库$ git commit -m "提交说明" 备注:ad ...

  7. 使用Appium 测试微信小程序和微信公众号方法

    由于腾讯系QQ.微信等都是基于腾讯自研X5内核,不是google原生webview,需要打开TBS内核Inspector调试功能才能用Chrome浏览器查看页面元素,并实现Appium自动化测试微信小 ...

  8. IntelliJ IDEA 自动导入包的问题

    我们再使用IDE写代码的时候,往往需要 鼠标点中这个类 然后 使用 alt+enter ,导入响应的包,如果导入的包比较多,一个一个点 也是费事.  因为用手动,有可能需要你选择导入那个包,有时候类名 ...

  9. kickstart配置LINUX无人值守选项--rootpw

    linux kickstart rootpw密码可以使用明文,也可以使用加密过的值(密码为:IPPBXADMINROOT) 注意:在这里要使用加密过的值,否则安全性就太低了 rootpw --iscr ...

  10. 20155225 2016-2017-2 《Java程序设计》第六周学习总结

    20155225 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 java的输入输出系统 在重新指定标准输入输出时不同: 重新指定标准输入为文档输入时,是这样 ...