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

砝码称重问题:1449贪心算法高效解决1秒内完成

题目1449砝码称重问题通过高效的贪心算法在1秒内成功解决。给定三种不同重量的砝码\(w_0\)、\(w_1\)和\(w_2\),每种砝码各有一个。本题要求判断是否能够使用这些砝码组合出一个特定的重量\(m\)。通过示例解析,详细展示了如何利用贪心策略快速找到解决方案。

1449 砝码称重
1 秒 131,072 KB 40 分 4 级题
现在有好多种砝码,他们的重量是 w0,w1,w2,... 每种各一个。问用这些砝码能不能表示一个重量为m的东西。

样例解释:可以将重物和3放到一个托盘中,9和1放到另外一个托盘中。

思路:

w进制算法,
如果没有天平,只是这些砝码表示m的话,只需要将m表示成w进制数,然后要求每一位不是0就是1.(每个质量的砝码只有一个,要么放,要么不放)
现在有这个天平,n这个数就是 两个 0 1 组成的数之差
因为有借位问题,相差为1是可以的
即只有下面四种情况:

0-0=0 1-0=1 0-1=w-1(向高位借一后) 1-1=0

分为三大类:

第一大类:相应位数之差为0 1的就很明了

第二大类:相应位数之差为w-1的,借位后的那一位在后面给它加上 1 就好了

第三大类:其余情况就是无解了

代码:

package _51_node.greedy;import java.util.Scanner;public class ex_1449 {/*** 1449 砝码称重* 1 秒 131,072 KB 40 分 4 级题*

* w进制算法,* 如果没有天平,只是这些砝码表示m的话,只需要将m表示成w进制数,然后要求每一位不是0就是1.(每个质量的砝码只有一个,要么放,要么不放)*

* 现在有这个天平,n这个数就是 两个 0 1 组成的数之差* 因为有借位问题,相差为1是可以的* 即只有下面四种情况:** 0-0=0 1-0=1 0-1=w-1(向高位借一后) 1-1=0** 分为三大类:** 第一大类:相应位数之差为0 1的就很明了** 第二大类:相应位数之差为w-1的,借位后的那一位在后面给它加上 1 就好了** 第三大类:其余情况就是无解了** @param args*/public static void main(String[] args) {Scanner cin = new Scanner(System.in);int w = cin.nextInt();int n = cin.nextInt();boolean flag = true;while (n != 0) {if (n % w == 0 || n % w == 1) n /= w;else if ((n + 1) % w == 0) n = (n + 1) / w;else {flag = false;break;}}if (flag) System.out.println("YES");else System.out.println("NO");}
}

转:https://www.cnblogs.com/somliy/p/10043786.html



推荐阅读
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • Java 中 Writer flush()方法,示例 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • Java 类成员初始化顺序与数组创建
    本文探讨了Java中类成员的初始化顺序、静态引入、可变参数以及finalize方法的应用。通过具体的代码示例,详细解释了这些概念及其在实际编程中的使用。 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
author-avatar
秀珍冠秋晓雯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有