博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU3847——Trash Removal(凸包,枚举)
阅读量:4248 次
发布时间:2019-05-26

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

Trash Removal

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 848    Accepted Submission(s): 272
Special Judge


Problem Description
Allied Chute Manufacturers is a company that builds trash chutes. A trash chute is a hollow tube installed in buildings so that trash dropped in at the top will fall down and be collected in the basement. Designing trash chutes is actually highly nontrivial. Depending on what kind of trash people are expected to drop into them, the trash chute needs to have an appropriate size. And since the cost of manufacturing a trash chute is proportional to its size, the company always would like to build a chute that is as small as possible. Choosing the right size can be tough though.
We will consider a 2-dimensional simplification of the chute design problem. A trash chute points straight down and has a constant width. Objects that will be dropped into the trash chute are modeled as polygons. Before an object is dropped into the chute it can be rotated so as to provide an optimal fit. Once dropped, it will travel on a straight path downwards and will not rotate in flight. The following figure shows how an object is first rotated so it fits into the trash chute.
Your task is to compute the smallest chute width that will allow a given polygon to pass through.
 

Input
The input contains several test cases. Each test case starts with a line containing an integer n (3 <= n <= 100), the number of points in the polygon that models the trash item.
The next n lines then contain pairs of integers xi and yi (0 <= x
i, y
i <= 10^4), giving the coordinates of the polygon vertices in order. All points in one test case are guaranteed to be mutually distinct and the polygon sides will never intersect. (Technically, there is one inevitable exception of two neighboring sides sharing their common vertex. Of course, this is not considered an intersection.)
The last test case is followed by a line containing a single zero.
 

Output
For each test case, display its case number followed by the width of the smallest trash chute through which it can be dropped. Display the minimum width with exactly two digits to the right of the decimal point, rounding up to the nearest multiple of 1/100. Answers within 1/100 of the correct rounded answer will be accepted.
 

Sample Input
30 03 00 440 1010 020 1010 200
 

Sample Output
Case 1: 2.40Case 2: 14.15
 

Source

题意:给你一个多边形,求能够使该多边形通过的最小宽度。

分析:求凸包,枚举每条边为底的高度,取最小值。 因为是实际应用题,要求结果精确到小数点后两位,所以还要*100向上取整后 /100。

#include 
#include
#include
#include
#include
#include
#define INF 0x7fffffffusing namespace std;typedef long long LL;const int N = 1000 + 10;const double PI = acos(-1.0);const double esp = 1e-10;int dcmp(double x) {if(fabs(x) < esp) return 0; else return x<0?-1:1;}struct Point{ double x,y; Point(double x=0,double y=0):x(x),y(y){ }};typedef Point Vector;Vector operator + (Vector A, Vector B) {return Vector(A.x+B.x, A.y+B.y);}Vector operator - (Vector A, Vector B) {return Vector(A.x-B.x, A.y-B.y);}Vector operator * (Vector A, double p) {return Vector(A.x*p, A.y*p);}Vector operator / (Vector A, double p) {return Vector(A.x/p, A.y/p);}bool operator < (const Point& a, const Point& b){ return a.x
1 && Cross(ch[m-1]-ch[m-2], p[i]-ch[m-2]) <= 0) m--; ch[m++] = p[i]; } int k = m; for(int i = n-2 ;i>=0;i--) { while(m>k && Cross(ch[m-1]-ch[m-2], p[i]-ch[m-2]) <= 0) m--; ch[m++] = p[i]; } if(n > 1) m--; return m;}int n;Point P[N],ch[N];int main(){ int C=1; while(scanf("%d",&n)!=EOF && n) { for(int i=0;i

转载地址:http://oarhi.baihongyu.com/

你可能感兴趣的文章
Java学习——String变量中的双胞胎
查看>>
java学习——apache commons fileupload实现上传
查看>>
Java学习——JSTL标签与EL表达式之间的微妙关系
查看>>
java学习——Jstl标签库大全
查看>>
java学习——代理模式之动静PK
查看>>
java学习——发送激活邮件-就这么简单
查看>>
Android成长(一)——环境搭建
查看>>
SSH框架——走进Struts2
查看>>
Android成长(二)——两个页面交互
查看>>
Android成长(三)——页面布局
查看>>
bootstrap——完美的分页查询
查看>>
SSH——浅谈Spring中的IOC容器
查看>>
SSH——Struts2大战SpringMVC
查看>>
几番周折后的稳定
查看>>
Java时时调度(一)
查看>>
Java时时调度(二)
查看>>
SSH——Hibernate初学者之旅(一)
查看>>
SSH——浅谈spring中的事务(一)
查看>>
SSH——浅谈spring中的事务(二)
查看>>
java封装导出Excel
查看>>