UVALive 2474 Balloons in a Box(枚举)
https://vjudge.net/contest/277824#problem/A
尤其是模拟题,三思而后敲!!!
纠错了好久,主要还是没有处理好:单点若还未放气球,其他气球可以膨胀越过它(即可以无视这个点);如果选到一个点,它已经在某一气球半径内了,则置r=0.
还参考了一些其他测试数据
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<vector>
#include<cstring>
#include<queue>
#include<cmath>
const double PI = acos(-1.0);//记住PI
using namespace std;
int n, vis[];
double maxm;
double x1, x2, yy1, y2, z1, z2;
double a[], b[], c[], r[];
double dist(double a, double b, double c){
return sqrt(a*a+b*b+c*c);
}
double cal_min(double a, double b, double c){
double tmp1 = min(fabs(a-x1), min(fabs(b-yy1), fabs(c-z1)));
double tmp2 = min(fabs(a-x2), min(fabs(b-y2), fabs(c-z2)));
return min(tmp1, tmp2);
}
void dfs(double sum, int k)
{
if(k == n){
maxm = max(sum, maxm);
}
else
for(int i = ; i < n; i++){
if(!vis[i]){//主要问题处在下面的处理
r[i] = cal_min(a[i], b[i], c[i]);
for(int j = ; j < n; j++){//这里不能加j!=i
if(vis[j] == ){
if(dist(a[i]-a[j], b[i]-b[j], c[i]-c[j])>r[j])
r[i] = min(dist(a[i]-a[j], b[i]-b[j], c[i]-c[j])-r[j], r[i]);
else r[i] = ;
}
}
sum += r[i]*r[i]*r[i];
vis[i] = ;
dfs(sum, k+);
sum -= r[i]*r[i]*r[i];
vis[i] = ;
}
}
}
int main()
{
int kase=;
while(~scanf("%d", &n)&&n){ scanf("%lf%lf%lf", &x1, &yy1, &z1);
scanf("%lf%lf%lf", &x2, &y2, &z2);
for(int i = ; i < n; i++){
scanf("%lf%lf%lf", &a[i], &b[i], &c[i]);
}
memset(vis, , sizeof(vis));
memset(r, , sizeof(r));
maxm = ;
dfs(, );
printf("Box %d: %.0lf\n\n", ++kase, (fabs(x2-x1)*fabs(y2-yy1)*fabs(z2-z1)-maxm*PI*4.0/3.0));//a*b*c-(4/3)*PI*r*r*r
}
return ;
}
UVALive 2474 Balloons in a Box(枚举)的更多相关文章
- UVA 2474 - Balloons in a Box 爆搜
2474 - Balloons in a Box 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&a ...
- Java实现 蓝桥杯 算法训练 Balloons in a Box
试题 算法训练 Balloons in a Box 问题描述 你要写一个程序,使得能够模拟在长方体的盒子里放置球形的气球. 接下来是模拟的方案.假设你已知一个长方体的盒子和一个点集.每一个点代表一个可 ...
- 算法训练 Balloons in a Box (枚举,模拟)
问题描述 你要写一个程序,使得能够模拟在长方体的盒子里放置球形的气球. 接下来是模拟的方案.假设你已知一个长方体的盒子和一个点集.每一个点代表一个可以放置气球的位置.在一个点上放置一个气球,就是以这个 ...
- UVALive 6092 Catching Shade in Flatland --枚举+几何计算
题意:x=[-200,200],y=[-200,200]的平面,一天中太阳从不同角度射到长椅(原点(0,0))上,有一些树(用圆表示),问哪个时刻(分钟为单位)太阳光线与这些圆所交的弦长总和最长.太阳 ...
- UVALive 6885 Flowery Trails 最短路枚举
题目连接: http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=129723 题意: 给你一个n点m图的边 1到n有多条最短路 ...
- UVALive 4863 Balloons 贪心/费用流
There will be several test cases in the input. Each test case will begin with a line with three inte ...
- 洛谷2474 [SCOI2008] 天平 差分约束->枚举
题目描述 你有n个砝码,均为1克,2克或者3克.你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系.你把其中两个砝码A 和B 放在天平的左边,需要另外选出两个砝码放在天平的右边.问:有多少种 ...
- UVALive 6692 Lucky Number (思路 + 枚举)
题意:给你n 个数字,某一个数的幸运数是这个数前面比他小 离他最远的位置之差,求出最大幸运值. 析:先按从大到小排序,然后去维护那个最大的id,一直比较,更新最大值就好. 代码如下: #pragma ...
- UvaLive 4863 Balloons(贪心)
题意: 给定n个队伍, 然后A房间有a个气球, B房间有b个气球, 然后给出每个队伍所需要的气球数量和到A B房间的距离, 求把气球全部送到每个队伍的最短距离. 分析: 在气球充足的情况下, 那么我们 ...
随机推荐
- 资产信息之收集资产代码流程,API的一个认证,数据库表的设计
收集资产代码流程 1.起初我们些的代码是面条式的一堆的逻辑判断. 后来通过了不断的优化升级实现了一个3种方案都支持的CMDB系统,我们用哪种方案只需要在配置文件里修改一下设置就行了. 同时我们 ...
- LeetCode.数字转罗马数字
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并 ...
- SQLAlchemy+Flask-RESTful使用(二)
前言 本来没想到能这么快出二的,谁知道序列化组件写上头了.分享知识真的会上瘾.... 变更记录 # 19.3.18 起笔 # 19.3.18 使用SQLAlchemy排序方法 # 19.3.18 补充 ...
- MySQL(三)
一.创建库 1.创建一个库: create database 数据库名;create database 库名 character set 编码; mysql> create database m ...
- JavaScript代码规范
变量名:驼峰命名法(首单词小写,后面每个单词首字母大写) firstName = "John"; lastName = "Doe"; price = 19.90 ...
- jQuery时间轴插件timeline.js
http://www.jq22.com/jquery-info13695 http://www.jq22.com/jquery-info13357 简要教程 timeline.js是一款jQuery时 ...
- 3D 散点图的绘制
一般情况下,我们用到最多的是axes3d() 中的axes3d.Axes3D()类,AxesD() 类下面存在散点图,线性图,柱状图,曲线图等各种制图方式. 采用matplotlib 生成散点图. 一 ...
- 软件工程作业-(third)
1.选题目(1) 最大连续子数组和(最大子段和) 问题:给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最大值. ...
- mysql 两例习题
一. 综述:两张表,一张顾客信息表customers,一张订单表orders .创建一张顾客信息表customers,字段要求如下: c_id 类型为整型,设置为主键,并设置为自增长属性 c_name ...
- C# Entity To Json
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Da ...