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

Atcoder ABC340 C - Divide and Divide

Divide and Divide(分而治之)

时间限制:2s 内存限制:1024MB

【原题地址】

所有图片源自Atcoder,题目译文源自脚本Atcoder Better!

点击此处跳转至原题

【问题描述】

在这里插入图片描述

【输入格式】

在这里插入图片描述
在这里插入图片描述

【输出格式】

在这里插入图片描述

【样例1】

【样例输入1】

3

【样例输出1】

5

【样例说明1】

在这里插入图片描述

【样例2】

【样例输入2】

340

【样例输出2】

2888

【样例3】

【样例输入3】

100000000000000000

【样例输出3】

5655884811924144128

【解题思路】

老汉使用到的是记忆递归的解题方式

本题是求将 n 分解至 n 个 1 所花费的金额。
如果单纯的使用关系式 f(n)=f(n/2)+f((n+1)/2)+n 求解答案,对于数值较小的 n 可以在规定时间内解决,但当n的值特别大时,由于过程中有许多重复计算的步骤,所花费的时间将会超出规定时间,因此老汉使用到记忆递归的方式对每次计算出来的 f(n) 的值都进行保存,减少了不必要的重复计算,使计算效率提高。

代码注释有详细过程

【代码】

package ABC340_C_DivideandDivide;import java.util.HashMap;
import java.util.Scanner;public class Main {// 记忆集合mHashMap<Long, Long> m = new HashMap<Long, Long>();public static void main(String[] args) {Scanner scan = new Scanner(System.in);long n = scan.nextLong();Main ma = new Main();System.out.println(ma.divide(n));scan.close();}/*** 使用记忆递归,保存每一步求值结果,减少重复计算,缩短计算时间* * @param n 所要求值的数* @return 所需支付的总金额*/public long divide(long n) {// 当n为1时无需再进行计算if (n == 1) {return 0;}// 当记忆集合m中存有对应值时,直接调用该对应结果else if (m.get(n) != null) {return m.get(n);}// 当记忆集合中不存在对应值,利用关系式进行计算存储m.put(n, divide(n / 2) + divide((n + 1) / 2) + n);// 放回计算后得出的结果return m.get(n);}}
http://www.lryc.cn/news/302416.html

相关文章:

  • 趣学贝叶斯统计:概率密度分布(probability density function)
  • 伦敦金行情分析需要学习吗?
  • Java实现停车场收费系统 JAVA+Vue+SpringBoot+MySQL
  • 服务器遭受 DDoS 攻击的常见迹象有哪些?
  • 【机器学习笔记】 15 机器学习项目流程
  • 【C语言】位操作符与移位操作符练习
  • 第十四届“中关村青联杯”全国研究生数学建模竞赛-A题:无人机在抢险救灾中的优化运用
  • Android 9.0 Launcher3桌面显示多个相同app图标的解决办法
  • WordPress主题YIA在广告位添加图片广告时下方有空白怎么办?
  • 5.15 BCC工具之kvm_hypercall.py解读
  • git 解除本地分支与其它分支(远程分支)的关联
  • conda 所有的命令及其讲解
  • mysql 数据库主从复制搭建
  • 小白水平理解面试经典题目LeetCode 1025 Divisor Game【动态规划】
  • 基于单片机的智能宠物喂食器设计
  • 探索单片机应用领域:从智能家居到工业自动化
  • Nginx介绍和使用
  • 异步编程——CompletableFuture用法详解
  • Linux常用命令(不断更新)
  • C++ 浮点数二分 数的三次方根
  • 辽宁博学优晨教育科技有限公司视频剪辑培训专业之选
  • 数据转换成json格式
  • css3的var()函数
  • 武汉灰京文化展望未来游戏产业,科技创新引领全面升级的游戏体验
  • SOLIDWORKS Visualize 界面介绍
  • 负载均衡下webshell连接nginx解析漏洞、sql注入第一关
  • 养老项目技术架构和工程结构
  • 免费白嫖一个互联网创业者交流论坛,真香!
  • Zilliz Cloud 再发新版本:性能提升超 10 倍,AI 应用开发流程再简化!
  • 基于SpringBoot的高校竞赛管理系统