博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Uva 10012 - How Big Is It?
阅读量:6090 次
发布时间:2019-06-20

本文共 1588 字,大约阅读时间需要 5 分钟。

  How Big Is It? 

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=953

题目要求你求一个足以容纳所有给你不同半径的圆的矩阵尽可能短的长,一开始看到AC率就知道没那么简单,所以不考虑其他,仅仅计算全排列的前提下所有两圆相切累加后的最短长度,提交上去WA了,然后考虑了一段时间,觉得有可能会出现这种情况:

如果左边的圆不会这么大的时候,那么蓝色的线(半径)就不一定比红色的那条长了,见右图

 

   

所以仅仅根据半径计算两圆之间的距离是不行的,像右边的这种情况,只要处理了就没问题了,我这里是用另外一个数组,计算给出没一个圆实际的放置位置,每次都判断有无这中情况出现,最后算出这次排列需要的最小矩形的长,然后跟之前排列记录的最小矩形长进行比较

1 #include
2 #include
3 #include
4 #include
5 #include
6 #define MAXN 10 7 #define INF 0x7FFFFFFF 8 using namespace std; 9 double circle[MAXN], actually[MAXN];10 double minlen;11 12 double dis(double left, double right)13 {14 double a, c;15 c = left + right;16 a = fabs(left - right);17 return sqrt(c * c - a * a);18 }19 20 void Traverse(int n)21 {22 double len = 0;23 actually[0] = circle[0];24 for(int i=1; i
actually[i]) actually[i] = temp;31 }32 }33 double temp = -INF;34 for(int i=0; i
temp)37 temp = actually[i] + circle[i];38 }39 if(temp < minlen) minlen = temp;40 return;41 }42 43 int main()44 {45 #ifndef ONLINE_JUDGE46 freopen("input.txt", "r", stdin);47 #endif48 int T;49 cin>>T;50 while(T--)51 {52 int n;53 cin>>n;54 memset(circle, 0, sizeof(circle));55 for(int i=0; i
>circle[i];57 minlen = INF;58 sort(circle, circle+n);59 do60 {61 Traverse(n);62 }while(next_permutation(circle, circle+n));63 printf("%.3lf\n", minlen); 64 }65 return 0;66 }

 

转载于:https://www.cnblogs.com/liaoguifa/archive/2013/04/27/3047082.html

你可能感兴趣的文章
Linux 配置vnc,开启linux远程桌面
查看>>
CentOS6.4关闭触控板
查看>>
React Native 极光推送填坑(ios)
查看>>
Terratest:一个用于自动化基础设施测试的开源Go库
查看>>
修改Windows远程终端默认端口,让服务器更安全
查看>>
扩展器必须,SAS 2.0未必(SAS挺进中端存储系统之三)
查看>>
Eclipse遇到Initializing Java Tooling解决办法
查看>>
while((ch = getchar()) != '\n')
查看>>
好程序员web前端分享JS检查浏览器类型和版本
查看>>
Oracle DG 逻辑Standby数据同步性能优化
查看>>
exchange 2010 队列删除
查看>>
「翻译」逐步替换Sass
查看>>
H5实现全屏与F11全屏
查看>>
处理excel表的列
查看>>
C#数据采集类
查看>>
quicksort
查看>>
【BZOJ2019】nim
查看>>
LINUX内核调试过程
查看>>
【HDOJ】3553 Just a String
查看>>
Java 集合深入理解(7):ArrayList
查看>>