UCF Local Programming Contest 2012(Practice)E. Pete's Pantry 【模拟】
题意:
n个罐子,每个罐子印了几行字,一行以#为界,最长的的一行记为w,每个罐子是高为6,宽为w的矩形+外面一圈#。按输入顺序将罐子叠放起来,规则为:罐子A(宽度w)只能放在宽度比它大的其他罐子上。从左往右遍历栈,如果当前最高栈罐子的宽度大于w,该罐子叠放到这一栈上。如果找不到这种栈,在最右边开辟一个新栈。另外,每个罐子叠放的位置和字的位置尽可能居中对齐,若不能,可以偏左或偏上一格。
最后让你输出罐子叠放的图。图最大为80*60
题解:
没什么好说的,模拟就完事了 。
mp[][]最后存放的图;w[]每个罐子的宽度;ve[]每个罐子上的字;ans[i]第i栈上存放的罐子id;st[i]第i栈目前最高的罐子的宽度;
h,d是每个罐子的上下界,l,r是每个罐子的左右阶,left是当前列的左边界。
kai是居中处理过后开始的行位置,o是居中处理过后的没一行字开始的列位置。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=10050;
vector<string>ve[105];
vector<int>ans[105];
int w[105],st[maxn];
char s[maxn];
char mp[1005][105];
int main()
{int n,t,ka=0;scanf("%d",&t);while(t--){scanf("%d",&n);getchar();for(int i=1;i<=n;i++){ve[i].clear();gets(s+1);int len=strlen(s+1);string ss="";w[i]=0;for(int j=1;j<=len;j++){if(s[j]=='#'){ve[i].push_back(ss);int tmp=ss.length();w[i]=max(w[i],tmp);ss="";}else ss+=s[j];}ve[i].push_back(ss);int tmp=ss.length();w[i]=max(w[i],tmp);//printf("w[%d]:%d\n",i,w[i]);}printf("Can Stack #%d:\n",++ka);for(int i=1;i<=6;i++){for(int j=1;j<10;j++){printf(" ");}printf("%d",i);}printf("\n");for(int i=1;i<=6;i++){for(int j=1;j<=10;j++){printf("%d",j%10);}}printf("\n");int now=0,mx=0;for(int i=1;i<=n;i++){int flag=0;for(int j=1;j<=now;j++){if(st[j]>w[i]){flag=1;ans[j].push_back(i);st[j]=w[i];break;}}if(!flag){now++;ans[now].clear();ans[now].push_back(i);st[now]=w[i];}}for(int i=1;i<=now;i++){mx=max(mx,(int)ans[i].size());}mx=mx*8;for(int i=1;i<=mx;i++)for(int j=1;j<=60;j++) mp[i][j]=' ';int left=1;for(int k=1;k<=now;k++){int l=left,r=left+w[ans[k][0]]+1;int h=0,d=-7;//for(int i=l;i<=r;i++) mp[h][i]=mp[d][i]='#';//for(int i=h;i>=d;i--) mp[i][l]=mp[i][r]='#';int y=ans[k].size();int rr=r;//if(y>1){for(int i=0;i<y;i++){int f=((r-l+1)%2)^((w[ans[k][i]])%2);int xiao=(r-l+1-w[ans[k][i]]-2)/2;//printf("!%d\n",xiao);if(f){l+=xiao;r-=xiao;r--;}else{l+=xiao;r-=xiao;}h+=8;d+=8;int id=ans[k][i];int hi=ve[id].size(),kai;if(hi%2){kai=h-(7-hi)/2;}else{kai=h-(8-hi)/2;}for(int j=0;j<hi;j++){int o=l+1;int tp=ve[id][j].size();int ff=((r-l+1)%2)^(tp%2);if(ff){o+=(r-l-2-tp)/2;}else o+=(r-l-1-tp)/2;for(int p=0;p<ve[id][j].size();p++){mp[kai][p+o]=ve[id][j][p];}kai--;}//printf("!%d\n",l,r,h,d);for(int j=l;j<=r;j++) mp[h][j]=mp[d][j]='#';for(int j=h;j>=d;j--) mp[j][l]=mp[j][r]='#';}//}left=rr+2;}for(int i=mx;i>=1;i--){for(int j=1;j<=60;j++){printf("%c",mp[i][j]);}printf("\n");}printf("\n");}return 0;
}
UCF Local Programming Contest 2012(Practice)E. Pete's Pantry 【模拟】相关推荐
- 【画画】UCF Local Programming Contest 2012(Practice)E. Pete's Pantry
题目链接https://www.jisuanke.com/contest/7332 纯粹的画画题(可光题意就理解了一年) 此生再也不愿意做这种题(流泪) #include<bits/stdc++ ...
- UCF Local Programming Contest Round 1A记录
A. Briefcases Full of Money 题目描述 输入描述: 输出描述: 示例1 输入 84 111 2 3 2 3 输出 5 示例2 输入 200 3 20 5 4 1 输出 50 ...
- UCF Local Programming Contest 2016 计蒜客解(补)题报告
A - Majestic 10(签到) 题目链接 #include <iostream> using namespace std;int main() {int t,x,y,z;scanf ...
- 【水一波题解】题解 of University of Central Florida 2020 (Fall) “Practice” Local Programming Contest
题解 of University of Central Florida 2020 (Fall) "Practice" Local Programming Contest [by_0 ...
- Stanford Local Programming Contest 2011
这几天把SLPC2011的题目做一下 这里是题目连接:SLPC2011 A.Another Rock-Paper-Scissors Problem 题目大意:给出Sonny在每一局出石头剪刀布的规则( ...
- (趋势)The 2002 Trend Micro Programming Contest, Preliminary
The 2002 Trend Micro Programming Contest, Preliminary 蕷B氡呂? 蘥?╂賓Y? Good Neighbors a???6摕 圓2d:&a ...
- freee Programming Contest 2022(AtCoder Beginner Contest 264)A~D题详细讲解
目录 博主赛情 网站链接 比赛简介 Contest Information Reason why freee needs AtCoder users freee's business content ...
- 2018-2019 ACM-ICPC Brazil Subregional Programming Contest 题解
2018-2019 ACM-ICPC Brazil Subregional Programming Contest 题解 比赛链接:2018-2019 ACM-ICPC Brazil Subregio ...
- 2015 HIAST Collegiate Programming Contest J
Polygons Intersection 题意:给2个凸多边形,求相交面积 思路:不会,套板子就是了 AC代码: #include "iostream" #include &qu ...
最新文章
- Excel 经纬度度分秒转化为小数格式
- Java日志体系总结
- VC++在两个按钮之间连直线和折线
- JavaScript程序开发(十五)—函数的属性和方法
- uoj#348/洛谷P4221 [WC2018]州区划分(FWT)
- Altium Designer敷铜的规则设定
- [转]Linux之ACL权限
- jquery 查找表格里的input_jquery获取input表单值的代码
- Android基础 --- Widget
- 非标自动化企业前十名_自动化输送+旋盖,竟如此简单!机械设计教程精选!...
- 转https_PDF怎么转成JPG最简单?分享免费的PDF转图片方法
- 用ILDasm.exe深入理解委托
- 百度云apkg手机文件怎么打开_下载不限速,这款网盘软件,轻松秒杀百度云!...
- Java项目:在线bbs论坛系统(java+SSM+JSP+bootstrap+jQuery+mysql)
- Python: 进行one-hot编码
- 五个方向告诉你如何运营好一个公众号!
- stm32及LPC1768库函数串口输出重定向
- Spring 你让我伤透了个心啊!
- 推荐几本这个系列封面的编程书,涉及Python、计算机图形学、Linux
- Discuz!教程之门户列表页文章中无图片时,从图库中选择一张作为封面