UVA 2474 - Balloons in a Box 爆搜
2474 - Balloons in a Box
题目连接:
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 爆搜的更多相关文章
- UVALive 2474 Balloons in a Box(枚举)
https://vjudge.net/contest/277824#problem/A 尤其是模拟题,三思而后敲!!! 纠错了好久,主要还是没有处理好:单点若还未放气球,其他气球可以膨胀越过它(即可以 ...
- 【BZOJ-1853&2393】幸运数字&Cirno的完美算数教室 容斥原理 + 爆搜 + 剪枝
1853: [Scoi2010]幸运数字 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 1817 Solved: 665[Submit][Status] ...
- POJ 1166 The Clocks (爆搜 || 高斯消元)
题目链接 题意: 输入提供9个钟表的位置(钟表的位置只能是0点.3点.6点.9点,分别用0.1.2.3)表示.而题目又提供了9的步骤表示可以用来调正钟的位置,例如1 ABDE表示此步可以在第一.二.四 ...
- 【 POJ - 1204 Word Puzzles】(Trie+爆搜|AC自动机)
Word Puzzles Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 10782 Accepted: 4076 Special ...
- hdu5323 Solve this interesting problem(爆搜)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Solve this interesting problem Time Limit ...
- hdu4536-XCOM Enemy Unknown(爆搜)
XCOM-Enemy Unknown是一款很好玩很经典的策略游戏. 在游戏中,由于未知的敌人--外星人入侵,你团结了世界各大国家进行抵抗.随着游戏进展,会有很多的外星人进攻事件.每次进攻外星人会选择3 ...
- poj1077 Eight【爆搜+Hash(脸题-_-b)】
转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4298840.html ---by 墨染之樱花 题目链接:http://poj.org/pr ...
- [NOIP2015] 斗地主 大爆搜
考试的时候想了半天,实在是想不到解决的办法,感觉只能暴力..然后暴力也懒得打了,小数据模拟骗30分hhh 然而正解真的是暴力..大爆搜.. 然后我的内心拒绝改这道题(TAT) 不过在wcx大佬的帮助下 ...
- BZOJ 1207: [HNOI2004]打鼹鼠【妥妥的n^2爆搜,dp】
1207: [HNOI2004]打鼹鼠 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3259 Solved: 1564[Submit][Statu ...
随机推荐
- Mysql 监控性能状态 QPS/TPS【转】
QPS(Query per second) 每秒查询量 TPS(Transaction per second)每秒事务量 这是Mysql的两个重要性能指标,需要经常查看,和Mysql基准测试的结果对比 ...
- python小工具之读取host文件
# -*- coding: utf-8 -*- # @Time : 2018/9/12 21:09 # @Author : cxa # @File : readhostfile.py # @Softw ...
- java浅复制与深手动构造实现
首先来看看浅拷贝和深拷贝的定义: 浅拷贝:使用一个已知实例对新创建实例的成员变量逐个赋值,这个方式被称为浅拷贝. 深拷贝:当一个类的拷贝构造方法,不仅要复制对象的所有非引用成员变量值,还要为引用类型的 ...
- 谈谈.NET MVC QMVC高级开发
自从吾修主页上发布了QMVC1.0,非常感兴趣,用了半月的时间学习,真的感觉收益非浅,在此声明非常感谢吾修大哥的分享! 1.轻快简单,框架就几个类,简单,当然代码少也就运行快!单纯的MVC,使的如果你 ...
- http://s22.app1105796624.qqopenapp.com/
http://s22.app1105796624.qqopenapp.com/ http://121.43.114.69/xiyou/app/js/ac_tx.js http://hiyouba.co ...
- Git 撤销操作、删除文件和恢复文件
大致介绍 经过前面的学习,已经建立了版本库,并上传了文件,这次来学习对这些文件进行基本的操作,即: ◆ 撤销操作 ◆ 删除文件 ◆ 恢复文件 我在此之前,已经将三个文件提交到了版本库 撤销操作 撤销操 ...
- wpf 查找 子元素
RightContainer.ApplyTemplate();//如果找不到,就执行该句试一试 var xxx=UIHelper.FindChild<ScrollViewer>(Right ...
- POJ 2955 Brackets(括号匹配一)
题目链接:http://poj.org/problem?id=2955 题目大意:给你一串字符串,求最大的括号匹配数. 解题思路: 设dp[i][j]是[i,j]的最大括号匹配对数. 则得到状态转移方 ...
- CVE-2009-3459
Adobe Acrobat和Reader都是美国Adobe公司开发的非常流行的PDF文件阅读器. Adobe Reader和Acrobat 7.1.4之前的7.x版本,8.1.7之前 ...
- iOS网络加载图片缓存与SDWebImage
加载网络图片可以说是网络应用中必备的.如果单纯的去下载图片,而不去做多线程.缓存等技术去优化,加载图片时的效果与用户体验就会很差. 一.自己实现加载图片的方法 tips: *iOS中所有网络访问都是异 ...