`
bcyy
  • 浏览: 1839785 次
文章分类
社区版块
存档分类
最新评论

Timus 1935. Tears of Drowned 详解

 
阅读更多

Old Captain Jack Sparrow’s friend Tia Dalma, the fortuneteller and prophetess, often makes potions. She has an outstanding collection of the rarest ingredients such as rat tails, fingers of drowned, tears of virgins and so on. And all these ingredients require special care.
Recently Tia Dalma received some good skins of bats as a payment, and now she wants to dry them. To dry ingredients fortuneteller usually uses specially prepared books as the magical properties of the skins could be lost during prolonged contact with other objects. Tia Dalma knows how many sheets should be on both sides of the skin to save it unspoiled. For ai-th skin that number isai, that is, the distance from it to the neighboring skins and the book cover can’t be less thanaisheets. Help a fortuneteller determine the minimum number of sheets that should be in the book to save rare ingredients from damage.

Input

The first line contains integern that is the number of skins (1 ≤n≤ 100). The second line containsnintegersai(1 ≤ai≤ 100).

Output

Output the minimal required number of sheets in the book.

Sample

input output
3
5 10 3
28


这是个十分难理解的题目,一难:难理解题意; 二难:难理解算法

题意简略为:

把一些奇怪的湿蝙蝠皮夹在书中,每张蝙蝠皮都带一个值,每张蝙蝠皮的两边的书的页数不能少于这个值,求最小需要使用多少页书的书本?

很奇怪吧,不过她是说个魔法故事的,多奇怪都不奇怪,O(∩_∩)O~

本题算法:

例子中为什么是28呢?

误解:5页+max(5,10) + max(10, 3) + 3 = 28

正解:3页+max(3, 5)+max(5, 10)+10 = 28

再看一个例子:

6
1 3 2 5 4 6

误解:1页+max(1, 3) + max(3, 2)+max(2,5)+max(5,4)+max(4,6) + 6 = 29

正解:1页+max(1, 2) +max(2, 3) + max(3, 4)+max(4,5)+max(5,6)+6 = 27

这就可以看出规律来了:

先排序然后求解。

不过这个虽然是正确解,但是最佳是:sum+max(array)


为什么要这样呢?

看清楚题意,题目没有规定要使用上面顺序来放这些蝙蝠皮,所以我们可以随便安排这些蝙蝠皮的位置--要读题读出这个意思不容易啊。


那么为什么要由小到大安排呢?

因为我们必须要保证小的数值的蝙蝠皮必须要使用到,不能保证使用两次,那就保证使用一次 -- 那么就只能是由小到大安排了。


理解了意思之后,程序却是十分简单的:

#include <algorithm>
#include <iostream>
using namespace std;

void TearsofDrowned1935()
{
	int n = 0, a = 0, ans = 0, maxNum = 0;
	cin>>n;
	for (int i = 0; i < n; i++)
	{
		cin>>a;
		ans += a;
		maxNum = max(maxNum, a);
	}
	ans += maxNum;
	cout<<ans;
}




分享到:
评论

相关推荐

    Machine Learning and Security: Protecting Systems with Data and Algorithms

    Through worked examples and guided discussions, we show you how to think about data in an adversarial environment and how to identify the important signals that can get drowned out by noise. ...

    新建文本文档.txt

    新建文本文档

    开源Git gui工具Fork

    开源Git gui工具Fork,CSDN能找到教程,但是资料不多,推荐用Tortoise

    yolov5在华为昇腾atlas上加速推理

    该资源为yolov5在华为昇腾atlas上使用Ascend310芯片加速推理,属于c++后端开发,适合C++开发者在华为昇腾盒子上移植深度学习算法的博主们。 资源是demo形式,包含完整的一套代码,还有转好的离线模型文件和跑出的测试结果图片。

    C++ 实现贪吃蛇小游戏

    C++贪吃蛇小游戏简介 内容概要 C++贪吃蛇小游戏是一款经典的2D游戏,它利用C++编程语言结合基本的图形库(如NCurses库或SDL库)实现。游戏的核心玩法包括控制贪吃蛇在封闭的场地内移动,通过吃掉随机出现的食物来增长身体长度,同时避免碰到场地边界或自己的身体,否则游戏结束。游戏界面简洁直观,通过键盘控制贪吃蛇的方向,提供流畅的游戏体验。 适用人群 C++贪吃蛇小游戏适用于广泛的人群,特别是: C++编程学习者:对于正在学习C++编程的学生或爱好者,这款小游戏是一个很好的实践项目。通过实现游戏,可以加深对C++语法、数据结构、面向对象编程等知识点的理解和应用。 使用场景及目标 C++贪吃蛇小游戏可以在以下场景中使用,并达到以下目标: 编程教学实践:在编程教学课堂上,教师可以使用该游戏作为案例,引导学生完成项目的开发。通过实践,学生可以更好地掌握C++编程技能,并将理论知识应用于实际项目中。 个人项目实践:对于个人学习者,实现贪吃蛇小游戏可以作为自我挑战和实践的机会。通过独立完成项目,可以提升自己的编程能力和解决问题的能力。

    ec616DataSheet

    移芯NBIOT 芯片,NB芯片,水表电表芯片,烟感 地磁芯片 超弱信号环境业务能力。

    预测结果.xlsx

    预测结果

    简易java订销管理系统-javainfo

    简易java订销管理系统_javainfo,包含全量功能源码,及相关文档说明,供大家学习使用!!!

    Java开发案例-springboot-52-POI导出Excel-源代码+文档.rar

    Java开发案例-springboot-52-POI导出Excel-源代码+文档.rar Java开发案例-springboot-52-POI导出Excel-源代码+文档.rar Java开发案例-springboot-52-POI导出Excel-源代码+文档.rar Java开发案例-springboot-52-POI导出Excel-源代码+文档.rar Java开发案例-springboot-52-POI导出Excel-源代码+文档.rar Java开发案例-springboot-52-POI导出Excel-源代码+文档.rar

    附件1预测.xlsx

    附件1预测

    基于java的习题检索系统源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    Java开发案例-springboot-31-实现快递物流查询(快递鸟)-源代码+文档.rar

    Java开发案例-springboot-31-实现快递物流查询(快递鸟)-源代码+文档.rar Java开发案例-springboot-31-实现快递物流查询(快递鸟)-源代码+文档.rar Java开发案例-springboot-31-实现快递物流查询(快递鸟)-源代码+文档.rar Java开发案例-springboot-31-实现快递物流查询(快递鸟)-源代码+文档.rar Java开发案例-springboot-31-实现快递物流查询(快递鸟)-源代码+文档.rar Java开发案例-springboot-31-实现快递物流查询(快递鸟)-源代码+文档.rar Java开发案例-springboot-31-实现快递物流查询(快递鸟)-源代码+文档.rar Java开发案例-springboot-31-实现快递物流查询(快递鸟)-源代码+文档.rar

    测试手柄以及其他外设在安卓模拟器或者安卓手机上的操作按键以及使用的摇杆向量

    测试手柄以及其他外设在安卓模拟器或者安卓手机上的操作按键以及使用的摇杆向量,通过按键以及摇杆来识别手柄或者其他外设的操作按键以及摇杆等。

    第一篇20240528_00.png

    第一篇20240528_00.png

    基于Java的实用的音乐软件微信小程序的设计与开发源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    使用SAHI模块完成超分辨率以及小目标检测是应用示例python源码+项目说明

    使用SAHI模块完成超分辨率以及小目标检测是应用示例python源码+项目说明个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 使用SAHI模块完成超分辨率以及小目标检测是应用示例python源码+项目说明个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。使用SAHI模块完成超分辨率以及小目标检测是应用

    第二次操作系统作业等9个文件.zip

    第二次操作系统作业等9个文件.zip

    C++ 控制台版本坦克大战游戏

    C++ 控制台版坦克大战游戏简介 内容概要 C++ 控制台版坦克大战游戏是一款基于C++编程语言开发的经典射击游戏。 通过键盘控制坦克移动攻击,躲避敌方坦克的攻击,同时消灭它们以完成关卡任务,支持地图编辑。 适用人群 这款游戏适用于对C++编程和游戏开发感兴趣的广大学生、编程爱好者以及初学者。通过参与游戏开发,他们可以深入了解C++编程语言的应用,学习游戏逻辑设计、用户输入处理。此外,对于想要通过实践提升编程能力和算法思维的人群,这款游戏也是一个不错的选择。 使用场景及目标 C++ 控制台版坦克大战游戏可以在多种场景下使用,并达到以下目标: 学习与实践场景:在编程学习或实践课程中,教师可以利用这款游戏作为教学案例,引导学生逐步完成游戏的开发。学生在开发过程中将学习并应用C++的基础知识,包括变量、数据类型、循环、条件语句等,同时培养解决问题的能力。

    程序设计java.rar

    程序设计java.rar

    ipywidgets-7.7.0.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

Global site tag (gtag.js) - Google Analytics