[sicily online]1012. Stacking Cylinders

來源:互聯網
上載者:User
Constraints

Time Limit: 1 secs, Memory Limit: 32 MB

Description

Cylinders (e.g. oil drums) (of radius 1 foot) are stacked in a rectangular bin. Each cylinder on an upper row rests on two cylinders in the row below. The cylinders in the bottom row rest on the floor.
Each row has one less cylinder than the row below.

 

This problem is to write a program to compute the location of the center of the top cylinder from the centers of the cylinders on the bottom row. Computations of intermediate values should use double
precision.

Input

Each data set will appear in one line of the input. An input line consists of the number, n, of cylinders on the bottom row followed by n floating point values giving the x coordinates of the centers of the cylinders (the y coordinates
are all 1.0 since the cylinders are resting on the floor (y = 0.0)). The value of n will be between 1 and 10 (inclusive). The end of input is signaled by a value of n = 0. The distance between adjacent centers will be at least 2.0 (so the cylinders do not
overlap) but no more than 3.4 (cylinders at level k will never touch cylinders at level k – 2).

Output

The output for each data set is a line containing the x coordinate of the topmost cylinder rounded to 4 decimal places, a space and the y coordinate of the topmost cylinder to 4 decimal places. Note: To help you check your work,
the x-coordinate of the center of the top cylinder should be the average of the x-coordinates of the leftmost and rightmost bottom cylinders.

Sample Input

4 1.0 4.4 7.8 11.21 1.06 1.0 3.0 5.0 7.0 9.0 11.010 1.0 3.0 5.0 7.0 9.0 11.0 13.0 15.0 17.0 20.45 1.0 4.4 7.8 14.6 11.20
Sample Output

6.1000 4.16071.0000 1.00006.0000 9.660310.7000 15.91007.8000 5.2143

題目分析:

因為題目給出的提示,可以求出所有球的橫座標,而最上面球的y座標可以根據緊挨著它的左下角的球來求出,所以可以通過dp或者遞迴都可以做出來

/**/#include<iostream>#include <iomanip>#include<stdio.h>#include<cmath>#include<iomanip>#include<list>#include <map>#include <vector>#include <string>#include <algorithm>#include <sstream>#include <stack>#include<queue>#include<string.h>using namespace std;typedef struct POINT{double x;double y;}Point;bool cmp(const Point &x1,const Point &x2){return x1.x<x2.x;}int main(){int n;while(cin>>n&&n!=0){vector<Point> data(n*n);//描述二維數組,橫座標表示第幾行,縱座標表示第幾列for(int i=0;i<n;i++){cin>>data[i].x;data[i].y=1.0;}sort(data.begin(),data.begin()+n,cmp);for(int i=1;i<n;i++) //行遍曆{for(int j=0;j<n-i;j++)//列遍曆{data[i*n+j].x=(data[j].x+data[j+i].x)/2;data[i*n+j].y=sqrt(4-(data[i*n+j].x-data[(i-1)*n+j].x)*(data[i*n+j].x-data[(i-1)*n+j].x))+data[(i-1)*n+j].y;}//for}//end forcout<<setiosflags(ios::fixed)<<setprecision(4)<<data[(n-1)*n].x<<" "<<data[(n-1)*n].y<<endl;}//end while}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.