SRM547
1、
Problem Statement |
|||||||||||||
You are given a int length. We have a regular hexagon: a polygon with six sides, in which all internal angles have 120 degrees and length is the length of each side. We are going to draw three non-intersecting diagonals in some way. These will divide the hexagon into four triangles. We will then compute their areas, take a piece of paper and write down the smallest of those four areas. Compute and return the largest number we can obtain on our piece of paper (by choosing which diagonals to draw). | |||||||||||||
Definition |
|||||||||||||
|
|||||||||||||
Notes |
|||||||||||||
- | Your return value must have a relative or an absolute error of less than 1e-9. | ||||||||||||
Constraints |
|||||||||||||
- | length will be between 1 and 1,000,000 (10^6), inclusive. | ||||||||||||
Examples |
|||||||||||||
0) | |||||||||||||
|
|||||||||||||
1) | |||||||||||||
|
|||||||||||||
2) | |||||||||||||
|
This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.
-
public double maximalArea(int L){
return (double)L/4.0*L*Math.sqrt(3);
}
2、
Problem Statement |
|||||||||||||
On a horizontal line, there are N uniformly spaced vertical pillars. The pillars are numbered 0 through N-1, in order. For each i, the distance between the bottoms of pillars i and i+1 is exactly w. For each i, the height of pillar i (0-based index) is an integer between 1 and heights[i], inclusive. We want to take a single piece of rope and use it to join the top ends of all pillars, in order. (Once in place, the rope will have the shape of a polyline consisting of N-1 segments.) What is the shortest length of rope that is guaranteed to be sufficient, regardless of the actual pillar heights?
You are given the int[] heights and the int w. Compute and return the answer to the above question. In other words, find a sequence of pillar heights (within the given constraints) for which the length of the rope we need is maximized, and return that maximum. |
|||||||||||||
Definition |
|||||||||||||
|
|||||||||||||
Notes |
|||||||||||||
- | Your return value must have a relative or an absolute error of less than 1e-9. | ||||||||||||
Constraints |
|||||||||||||
- | heights will contain between 1 and 50 elements, inclusive. | ||||||||||||
- | Each element of heights will be between 1 and 100, inclusive. | ||||||||||||
- | w will be between 1 and 100, inclusive. | ||||||||||||
Examples |
|||||||||||||
0) | |||||||||||||
|
|||||||||||||
1) | |||||||||||||
|
|||||||||||||
2) | |||||||||||||
|
|||||||||||||
3) | |||||||||||||
|
这一题使用动态规划的方法。
使用一个dp[i][j]数组,i 代表第i个位置,j代表i个位置上高度为j。
for(i=1;i<N;i++){
for(j=1;j<=H[i];j++){
for(k=1;k<=H[i-1];k++){
double dis=Math.sqrt((j-k)*(j-k)+w*w);
if(dp[i][j]<dp[i-1][k]+dis){
dp[i][j]=dp[i-1][k]+dis;
}
}
}
}