首页 > 代码库 > POJ2014 Flow Layout
POJ2014 Flow Layout
Time Limit: 1000MS | Memory Limit: 30000K | |
Total Submissions: 3161 | Accepted: 2199 |
Description
A flow layout manager takes rectangular objects and places them in a rectangular window from left to right. If there isn‘t enough room in one row for an object, it is placed completely below all the objects in the first row at the left edge, where the order continues from left to right again. Given a set of rectangular dimensions and a maximum window width, you are to write a program that computes the dimensions of the final window after all the rectangles have been placed in it.
For example, given a window that can be at most 35 units wide, and three rectangles with dimensions 10 x 5, 20 x 12, and 8 x 13, the flow layout manager would create a window that looked like the figures below after each rectangle was added.
The final dimensions of the resulting window are 30 x 25, since the width of the first row is 10+20 = 30 and the combined height of the first and second rows is 12+13 = 25.
For example, given a window that can be at most 35 units wide, and three rectangles with dimensions 10 x 5, 20 x 12, and 8 x 13, the flow layout manager would create a window that looked like the figures below after each rectangle was added.
The final dimensions of the resulting window are 30 x 25, since the width of the first row is 10+20 = 30 and the combined height of the first and second rows is 12+13 = 25.
Input
The input consists of one or more sets of data, followed by a final line containing only the value 0. Each data set starts with a line containing an integer, m, 1 <= m <= 80, which is the maximum width of the resulting window. This is followed by at least one and at most 15 lines, each containing the dimensions of one rectangle, width first, then height. The end of the list of rectangles is signaled by the pair -1 -1, which is not counted as the dimensions of an actual rectangle. Each rectangle is between 1 and 80 units wide (inclusive) and between 1 and 100 units high (inclusive).
Output
For each input set print the width of the resulting window, followed by a space, then the lowercase letter "x", followed by a space, then the height of the resulting window.
Sample Input
3510 520 128 13-1 -12510 520 133 12-1 -1155 175 175 177 97 202 10-1 -10
Sample Output
30 x 2523 x 1815 x 47
Source
Mid-Central USA 2004
调节心情用的水题。
纯模拟。
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstring> 6 #define LL long long 7 using namespace std; 8 const int mxn=500010; 9 int read(){10 int x=0,f=1;char ch=getchar();11 while(ch<‘0‘ || ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}12 while(ch>=‘0‘ && ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}13 return x*f;14 }15 int limit=0;16 int now=0;17 int w=0;18 int h=0;19 int last=0;20 int main(){21 int x,y;22 while(1){23 limit=read();24 if(!limit)break;25 w=h=last=now=0;26 while(1){27 x=read();y=read();28 if(x==-1 && y==-1){29 printf("%d x %d\n",w,h);30 break;31 }32 if(now+x<=limit){33 now+=x;34 w=max(w,now);35 h=max(h,last+y);36 }37 else{38 now=x;39 w=max(now,w);40 last=h;41 h=last+y;42 }43 // printf("now: %d %d\n",w,h);44 }45 }46 return 0;47 }
POJ2014 Flow Layout
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。