当前位置: 首页 > news >正文

UVa 651 Deck

题目描述

将若干张相同的矩形卡片沿桌边叠放,每张卡片的短边与桌边平行,且每张卡片最多与一张卡片接触(即上下各一张,形成一摞)。通过小心摆放,可以使整摞卡片伸出桌边的总长度最大。已知:

  • 111张卡片最多伸出1/21/21/2张卡片长度。
  • 222张卡片最多伸出3/43/43/4张卡片长度。
  • 333张卡片最多伸出11/1211/1211/12张卡片长度。

要求计算nnn张卡片(n≤99999n \le 99999n99999)能伸出的最大总长度(以卡片长度为单位),并四舍五入到小数点后333位。

输入格式

输入包含若干行,每行一个非负整数nnnn≤99999n \le 99999n99999),以文件结束符终止。

输出格式

首先输出一行标题:

# Cards Overhang

(注意#后有一个空格,CardsOverhang之间有两个空格)。然后对于每个输入整数nnn,输出一行,格式为:nnn右对齐占555列,然后一个空格,再输出悬伸长度,小数点在列121212(即总宽度为101010列,右对齐,保留三位小数)。

样例

输入

1 2 3 4 30

输出

1234567890123456 # Cards Overhang 1 0.500 2 0.750 3 0.917 4 1.042 30 1.997

(注:第一行1234567890123456仅用于对齐指引,不是输出的一部分。)

题目分析

本题为经典的“卡片悬挑”问题。物理上,为使悬挑总长度最大,应从最上面一张卡片开始,依次使每张卡片的重心恰好落在下方卡片的边缘上。设从上往下第kkk张卡片(kkk111开始)相对于其下方卡片的最大悬伸长度为1/(2k)1/(2k)1/(2k)。因此,nnn张卡片的总悬伸长度为:

overhang(n)=∑k=1n12k=12∑k=1n1k=12Hn, \textit{overhang}(n) = \sum_{k=1}^{n} \frac{1}{2k} = \frac{1}{2} \sum_{k=1}^{n} \frac{1}{k} = \frac{1}{2} H_n,overhang(n)=k=1n2k1=21k=1nk1=21Hn,

其中HnH_nHn为第nnn个调和数。由于nnn最大为999999999999999,直接累加计算即可,精度足够。

解题思路

  1. 预先计算数组overhang[0..99999],其中overhang[0] = 0.0,对于iii111999999999999999,令
    overhang[i]=overhang[i−1]+12i. \textit{overhang}[i] = \textit{overhang}[i-1] + \frac{1}{2i}.overhang[i]=overhang[i1]+2i1.
  2. 输出标题行。
  3. 对每个输入的nnn,按格式输出noverhang[n](保留三位小数)。

由于查询次数不限,预计算后每个查询为O(1)O(1)O(1)时间。

复杂度分析

  • 预计算:O(99999)O(99999)O(99999)次浮点加法,时间常数。
  • 每个查询:O(1)O(1)O(1)
  • 空间复杂度:O(100000)O(100000)O(100000),用于存储预计算结果。

代码实现

// Deck// UVa ID: 651// Verdict: Accepted// Submission Date: 2017-05-30// UVa Run Time: 0.000s//// 版权所有(C)2017,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;intmain(intargc,char*argv[]){cin.tie(0),cout.tie(0),ios::sync_with_stdio(false);cout.setf(ios::fixed);cout.precision(3);cout<<"# Cards Overhang\n";doubleoverhang[100000]={0.0};for(inti=1;i<=99999;i++)overhang[i]=overhang[i-1]+1.0/(double)(2*i);intcards;while(cin>>cards){cout<<setw(5)<<right<<cards;cout<<setw(10)<<right<<overhang[cards]<<'\n';}return0;}

总结

本题利用物理模型的调和级数求和公式,通过预计算避免了重复计算,并以精确的格式输出。核心在于理解悬伸长度的累加规律,以及正确处理浮点数输出格式。该解法简洁高效,适用于大规模查询。

http://www.jsqmd.com/news/1168919/

相关文章:

  • 8821au驱动:Linux玩家的无线救星,让老旧RTL8821AU芯片重获新生!
  • 杏系品牌管理(山西)有限公司与汾酒股份真实关系,一文看懂杏花村东方系列正统合作模式 - GrowthUME
  • 电动车托运只要260元?2026避坑指南:低价背后的套路与真香选择 - 快递物流资讯
  • Unity水墨画风Shader实战:从原理到应用实现3D渲染艺术化
  • 2026年7月最新昆明伯爵官方售后服务网点地址及客服电话一览 - 亨得利钟表维修中心
  • Vite 与 Webpack 混合构建:渐进式迁移的工程路径
  • ClearerVoice-Studio:让你的语音处理从入门到精通的完整指南
  • 喷墨打印机维护对比:HP 519 热水浸泡 vs 针管注墨 vs 自清洁功能实测
  • npm/pnpm/yarn 安装 ENOTFOUND 排查:3步定位网络与镜像源问题
  • 《图片华容道》一、背景设置使用指南
  • 旧衣服回收小程序哪个好?我试了5个,只有它让我赚了钱 - 快递物流资讯
  • 2026年7月浙江GEO优化公司TOP8权威榜单:实地走访整理选型测评白皮书 - 商业新知
  • 2026年7月最新长沙伯爵官方售后联系电话与客户服务中心网点地址 - 亨得利钟表维修中心
  • 2026办公提效六件套:离线可用、中文友好、隐私安全的实用工具链
  • 2026 大连 YSL 名包回收指南,易奢福报价公开不压价 - 奢侈品回收实体店
  • 终极免费视频下载助手:简单三步保存任何网页视频
  • 2026南昌新建上门回收黄金哪家靠谱?避坑指南与正规门店实测推荐 - 信息热点
  • Video2X:免费AI视频放大与帧率提升终极指南
  • 线上 SDS 抑郁测试避坑 TOP5,筛查抑郁情绪实测筛选优质平台清单 - 独家d资讯
  • PotPlayer字幕翻译插件:5步实现视频实时双语字幕
  • 如何突破PDF文档批量处理的效率瓶颈:PDF补丁丁的模块化架构与自动化解决方案
  • 2026年珠三角长三角精密蚀刻加工实力厂商推荐榜:化学蚀刻与激光蚀刻工艺全维度解析 - 信息热点
  • 如何快速提取Godot游戏资源:终极解包指南
  • 工业负载驱动设计:TPD2017FN与STM32G431KB的实战应用
  • 2026年商事诉讼律师拓展税法业务培训推荐机构?:税盟专业培训效果出众 - GrowUME
  • 赣州石城新车贴膜哪家好?琴江镇石城量子膜旗舰店,本地贴膜标杆门店推荐 - GrowUME
  • #2026年7月尚典奢品汇北京二手腕表行业估值标准公示|全维度机芯溯源定级体系,重塑高端名表公允变现规则 - 名表行情观察
  • 智能时代,CRM怎么选?私域、销售、全能三条路线大比拼 - 资讯快报
  • 5分钟快速上手:用AKShare构建你的Python金融数据分析平台
  • GLMcodingplan深度解析:代码生成的上下文穿透力与工程化实践