热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UVa11683:激光雕刻技术解析

自1958年发明以来,激光技术已在众多领域得到广泛应用,包括电子设备、医疗手术工具、武器等。本文将探讨如何使用激光技术进行材料雕刻,并通过编程解决一个具体的激光雕刻问题。

自1958年激光技术被发明以来,它已经在诸如电子设备、外科手术工具、武器等多个领域得到了广泛的应用。

激光雕刻设备示意图

上图展示了一种用于固体材料雕刻的激光设备示意图。图中可见,激光发射器可水平向右和向左移动,且速度恒定。当激光发射器在移动过程中开启时,会从材料块上移除一层特定厚度的材料,这些材料会被激光汽化。

下图展示了激光雕刻过程的一个例子,其中包括:(a) 初始状态下的材料块,高度为5毫米,长度为8毫米;(b) 雕刻后期望达到的形状;(c) 整个雕刻过程中各层材料的去除顺序。在每个步骤中,都会移除1毫米厚的一层材料。在雕刻过程中,激光共开启了7次,每次对应于材料块的一部分。

激光雕刻过程示例

请编写一个程序,给定材料块的高度和长度以及最终形状,计算出完成雕刻所需的激光开启次数。

输入

输入包含多个测试案例。每个测试案例由两行组成。第一行包含两个整数A和C,分别表示待雕刻材料块的高度(1 ≤ A ≤ 10^4)和长度(1 ≤ C ≤ 10^4),单位为毫米。第二行包含C个整数Xi,每个整数表示沿材料长度方向位置i至i+1之间的最终高度(0 ≤ Xi ≤ A,对于0 ≤ i ≤ C−1)。假设在每一步中,激光开启时会从材料的相应部分移除1毫米厚的一层。

输入结束标志为一行仅包含两个零,中间以空格分隔。

输出

对于每个测试案例,程序应输出一行,包含一个整数,表示为了将材料雕刻成指定形状需要开启激光的总次数。

样例输入

5 8
1 2 3 2 0 3 4 5
3 3
1 0 2
4 3
4 4 1
0 0

样例输出

7
3
3

问题链接: UVa 11683: Laser Sculpture

问题简述: 本题要求根据给定的材料尺寸和目标形状,计算出完成雕刻所需的最小激光开启次数。

问题分析: 该问题属于基础类型,主要考察对输入数据的理解及简单的数学运算能力。

程序说明: 通过读取输入数据,比较相邻位置的高度差,累加所有下降的高度值即为所需激光开启次数。

参考链接: 略

题记: 在解决问题时,尽量减少不必要的内存使用。

以下是使用C++实现的解决方案:

/* UVa 11683: Laser Sculpture */
#include
using namespace std;
int main()
{
int height, length, currentHeight, previousHeight, totalTurns;
while(scanf("%d", &height) != EOF && height) {
scanf("%d", &length);
previousHeight = height;
totalTurns = 0;
for(int i = 0; i scanf("%d", ¤tHeight);
if(currentHeight totalTurns += previousHeight - currentHeight;
previousHeight = currentHeight;
}
printf("%d\n", totalTurns);
}
return 0;
}


推荐阅读
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 哈密顿回路问题旨在寻找一个简单回路,该回路包含图中的每个顶点。本文将介绍如何判断给定的路径是否构成哈密顿回路。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • ImmutableX Poised to Pioneer Web3 Gaming Revolution
    ImmutableX is set to spearhead the evolution of Web3 gaming, with its innovative technologies and strategic partnerships driving significant advancements in the industry. ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文探讨了如何在模运算下高效计算组合数C(n, m),并详细介绍了乘法逆元的应用。通过扩展欧几里得算法求解乘法逆元,从而实现除法取余的计算。 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 本文探讨了 C++ 中普通数组和标准库类型 vector 的初始化方法。普通数组具有固定长度,而 vector 是一种可扩展的容器,允许动态调整大小。文章详细介绍了不同初始化方式及其应用场景,并提供了代码示例以加深理解。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
author-avatar
西南科技大学地质协会_927
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有