尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

UVa 553 Simply Proportion

UVa 553 Simply Proportion
📅 发布时间:2026/6/22 0:09:53

题目描述

题目要求将一行文本(由单词组成,单词间用一个空格分隔)重新格式化为指定长度(以点dot\texttt{dot}dot为单位)。每个字符有固定宽度(单位:点),空格(即单词间的分隔)宽度可变,用于填充以对齐左右边界。需要输出格式化后的行,其中单词内的字母间隔用固定点数(由规则计算),单词间的间隔用填充点数。输出格式中,字母间的间隔用/(n)表示,单词间的间隔用/后跟点数表示。要求行首行尾不能有空白点。

输入格式

输入包含多组测试用例,每组两行:

  • 第一行:目标长度NNN(N≤5000N \le 5000N≤5000)。
  • 第二行:原始文本(单词间用单个空格分隔,无首尾空格,至少两个单词,总字符数≤80\le 80≤80)。
    最后以一行0 SYMIBAA结束(不处理)。

输出格式

对于每组输入,输出一行格式化后的文本,格式如A/(4)I/(4)M/(18)S/...。

样例

输入

250 AIM SSY ABABA 200 SSSS AAAA 130 AA B AA 0 SYMIBAA

输出

A/(4)I/(4)M/(18)S/(4)S/(4)Y/(19)A/(4)B/(4)A/(4)B/(4)A/ S/(7)S/(7)S/(7)S/(22)A/(7)A/(7)A/(7)A A/(5)A/(15)B/(16)A/(5)A

题目分析

本题的核心是计算字符宽度,确定字母间隔和单词间隔的填充点数。

字符宽度表

字符宽度
A18
B17
I10
M20
S16
Y13
空格可变

字母间隔规则

  • 单词内相邻字母的最小间隔为333点。
  • 字母间隔点数 =⌊单词间隔点数/3⌋\lfloor \text{单词间隔点数} / 3 \rfloor⌊单词间隔点数/3⌋,但不得小于333?实际规则:字母间隔由单词间隔决定,且至少为333。具体计算时,先确定单词间隔的基准值,再按比例分配。

单词间隔规则

  • 单词间的最小间隔为101010点,无上限。
  • 总点数NNN减去所有字符宽度之和后,剩余点数用于单词间的间隔填充。这些间隔点数应尽量平均分配,多余的从行末开始逐个加111。

算法步骤

  1. 计算所有字符的宽度总和(不包括空格),记为charSum\textit{charSum}charSum。
  2. 设单词数为www,则单词间有w−1w-1w−1个间隔。
  3. 设字母间隔的总点数为L=(w−1)×letterGapL = (w-1) \times \text{letterGap}L=(w−1)×letterGap,其中letterGap\text{letterGap}letterGap为每个字母间隔的点数。
  4. 设单词间隔的总点数为S=(w−1)×wordGapS = (w-1) \times \text{wordGap}S=(w−1)×wordGap。
  5. 总点数N=charSum+L+SN = \textit{charSum} + L + SN=charSum+L+S。
  6. 已知letterGap=⌊wordGap/3⌋\text{letterGap} = \lfloor \text{wordGap} / 3 \rfloorletterGap=⌊wordGap/3⌋,且letterGap≥3\text{letterGap} \ge 3letterGap≥3,wordGap≥10\text{wordGap} \ge 10wordGap≥10。
  7. 枚举wordGap\text{wordGap}wordGap从101010开始递增,计算letterGap\text{letterGap}letterGap,检查是否满足等式。由于NNN不大,直接枚举可行。

输出格式

  • 字母间:A/(4)表示在 A 和下一个字母之间有444个点。
  • 单词间:S/后跟点数,但注意单词间的点数已经包含在字母间隔计算中?实际上,输出中单词间的分隔符是/(n)吗?从样例看,单词间直接用/后跟数字表示,没有字母。但A/(4)I/(4)M/(18)S/...中的S/实际上是单词 S 后的间隔?需要仔细分析。

复杂度分析

枚举wordGap\text{wordGap}wordGap至多N/10N/10N/10次,可接受。

代码实现

// Filling the Gaps// UVa ID: 552// Verdict: Accepted// Submission Date: 2017-05-11// UVa Run Time: 0.000s//// 版权所有(C)2017,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;intvisited[65536];voidbacktrack(inti,intv,string&pattern){if(i>=pattern.length())visited[v]=1;else{v*=2;if(pattern[i]=='*'){backtrack(i+1,v,pattern);backtrack(i+1,v+1,pattern);}else{v+=pattern[i]-'0';backtrack(i+1,v,pattern);}}}intmain(intargc,char*argv[]){cin.tie(0),cout.tie(0),ios::sync_with_stdio(false);intlength,n;while(cin>>length>>n){if(length==0&&n==0){cout<<"YES 0\n";break;}vector<string>words;vector<int>ids;string word;for(inti=1;i<=n;i++){cin>>word;intid=0;for(intj=0;j<word.size();j++){id*=2;if(word[j]=='*')id+=1;}words.push_back(word);ids.push_back(id);}sort(ids.begin(),ids.end());boolduplicated=false;for(inti=0;i<ids.size()-1;i++)if(ids[i]==ids[i+1]){duplicated=true;break;}if(duplicated){cout<<"NO\n";continue;}memset(visited,0,sizeof(visited));for(inti=0;i<words.size();i++)backtrack(0,0,words[i]);inttotal=pow(2,length),appeared=0;for(inti=0;i<total;i++)appeared+=visited[i];cout<<"YES "<<appeared<<'\n';}return0;}

相关新闻

  • 终极指南:如何免费突破网盘下载限制,获取真实直链地址
  • 2026昆明白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 2026年重庆混凝土预制构件厂家推荐:水篦子/路沿石/井盖/排水管/防撞墩等优质品牌全解析 - 品牌发掘

最新新闻

  • 2025AI搜索优化赛道洗牌加速,融景科技凭技术与服务领跑华南GEO市场 - 广东科技观察
  • 武汉市洪山区房屋修缮|维小达|窗户维修、吊顶维修、壁纸壁布、墙面维修、石材修复、瓷砖美缝、瓷砖维修全屋一站式旧房翻新破损修护服务 - 维小达科技
  • GPU全加速神经网络量子态框架:原理、部署与性能优化实战
  • Windows Cleaner终极指南:5分钟快速上手,彻底解决C盘爆红问题
  • IO流(二)IO流中异常捕获方式、字符集和底层实现以及出现的问题的详细讲解,字符流的详细讲解,字节和字符流的综合练习
  • Nmap数据分析实战:从扫描到安全洞察的自动化方法

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号