975 AlvinZH的1021实验

思路

贪心,简单题。

题目已经说明有且只有一种方法表示所求数,简单列举几项可以发现只由前i个砝码会可以表示[1,∑Wi]的所有数的。先找到最大需要的砝码Wi,问题变成了表示(n-Wi),可递归,可循环。见看考代码一。

本题亦可联想到三进制,思路清奇。可以参考段柯宇同学的题解。

分析

简单讲讲为什么,贪心在哪里。令W[6]={1,3,9,27,81,243}表示砝码重量,Sum[6] = {1,4,13,40,121,364}表示前i个砝码总和。

可以发现W[i+1]=Sum[i]*2+1(i∈[0,4]),这表明若Sum[i-1]<n≤Sum[i],能用的最大砝码只能是W[i]。如果最大使用W[i+1],就算减去所有更小的(即-Sum[i])结果依然大于W[i];如果最大使用W[i-1],就算加上所有更小的(即+Sum[i-2])变成Sum[i-1],亦不能表示n。所以判断最大使用的一定是W[i],而且是输出正的W[i],废话!

接下来用n-W[i]后,问题就变成了表示(n-Wi),负数并不是问题,变成正数,输出取负可解决。

参考代码一

//
// Created by AlvinZH on 2017/10/22.
// Copyright (c) AlvinZH. All rights reserved.
//#include <cstdio>
const int Weight[6] = {1,3,9,27,81,243};
const int Sum[6] = {1,4,13,40,121,364};int main()
{int n;while(~scanf("%d", &n)){int flag = 0;int i = 0;while(n > 0){for (i = 0; i < 6; ++i) {if(n <= Sum[i])break;}if(flag == 0)//第一个数{n -= Weight[i];printf("%d", Weight[i]);}if(flag == 1) {n -= Weight[i];printf("+%d", Weight[i]);}if(flag == -1) {n = Weight[i] - n;printf("-%d", Weight[i]);}if(n > 0) flag = 1;else if(n < 0){flag = -1;n = -n;}}printf("\n");}
}

转载于:https://www.cnblogs.com/AlvinZH/p/7977944.html

2016级算法第四次上机-C.AlvinZH的1021实验相关推荐

  1. 2016级算法第四次上机-B ModricWang的序列问题

    1019 ModricWang的序列问题 思路 此题题意非常清晰,给定一个序列,求出最长上升子序列的长度.从数据规模来看,需要\(O(nlogn)\) 的算法. \(O(nlongn)\) 求最长上升 ...

  2. 2016级算法第五次上机-E.AlvinZH的学霸养成记IV

    1039 AlvinZH的学霸养成记IV 思路 难题,最大二分图匹配. 难点在于如何转化问题,n对n,一个只能攻击一个,判断是否存在一种攻击方案我方不死团灭对方.可以想到把所有随从看作点,对于可攻击的 ...

  3. 2016级算法第六次上机-D.AlvinZH的学霸养成记V

    1081 AlvinZH的学霸养成记V 思路 中等题,计算几何. 这是一个排序问题,按极角排序.可以转化为叉积的应用,对于点A和B,通过叉积可以判断角度大小,共线时再判断距离. 叉积的应用.OA × ...

  4. 2016级算法第六次上机-A.Bamboo之寻找小金刚

    Bamboo之寻找小金刚 分析 可以抽象为许多连续线段,分别计数左拐和右拐的个数.考察叉积的基础应用. 假设ABC三点构成一个夹角∠ABC,B就是拐点,AC是辅助形成夹角.考虑线段AB和BC形成的向量 ...

  5. 2016级算法第五次上机-C.Bamboo和Coco

    1064 Bamboo和"Coco" 分析题意 每个亡灵至少一个花瓣,相邻的亡灵中思念值高的要获得的花瓣高(思念值相等是不需要花瓣一样多的).主要考贪心思路,为了使得花瓣总量最少, ...

  6. 2016级算法第三次上机-G.Winter is coming

    904 Winter is coming 思路 难题.首先简化问题, \(n\) 个0与 \(m\) 个1排成一列,连续的0不能超过x个,连续的1不能超过y个,求排列方法数. 显然会想到这是动态规划. ...

  7. 2016级算法期末上机-H.难题·AlvinZH's Fight with DDLs III

    1119 AlvinZH's Fight with DDLs III 思路 难题,最小点覆盖. 分析题意,某一个任务,既可以在笔记本A的 \(a\) 模式下完成,也可以在笔记本B的 \(b\) 模式下 ...

  8. 2016级算法期末上机-F.中等·AlvinZH's Fight with DDLs II

    1118 AlvinZH's Fight with DDLs II 思路 中等题,贪心. 理解题意,每次攻击中,可以使某个敌人生命值-1,自己生命值减去∑存活敌人总攻击力. 贪心思想,血量少攻击高的要 ...

  9. 2016级算法第二次上机-F.ModricWang's Number Theory II

    891 ModricWang's Number Theory II 思路 使得序列的最大公约数不为1,就是大于等于2,就是找到一个大于等于2的数,它能够整除序列中的所有数. 考虑使得一个数d整除数组中 ...

最新文章

  1. Spring学习总结(4)——Spring AOP教程
  2. 二叉树中序遍历方法实现
  3. TCP/IP总结(4)TCP之数据传输过程
  4. 人工智能学习--文本检测实践
  5. spark on yarn参数: 任务优先级
  6. python request url 转义_Python多线程抓取Google搜索链接网页
  7. java中 若干,Java中的随机数发生器。产生若干的复杂性
  8. java棋盘覆盖分治法_【单选题】实现棋盘覆盖算法利用的算法是( ) A. 分治法 B. 动态规划法 C. 贪心法 D. 回溯法...
  9. 与Adobe Reader安装有关的报错处理
  10. 北美电影票房Top10-2019年12月27日:《小妇人》表现亮眼
  11. RapidXML的读写
  12. Java面向对象编程三大特征 - 封装
  13. H5调用微信扫一扫识别二维码
  14. steam错误代码 -118 ; 443/80或其他端口被占用,请关闭占用该端口的进程后再点击启动服务 ; 关闭端口进程
  15. 全网最详细教程(上):教你如何从0-1制作出一张可视化大屏
  16. 抱抱脸(hugging face)教程-中文翻译-使用 Tokenizers 的 tokenizers
  17. Kylin多维分析引擎(四):Kylin Cude构建流程详解
  18. 点击发票填开就出现金税盘处于报税期,不能开票,怎么回事呢?
  19. 自控力读书笔记:第三章 累到无力抵抗:为什么自控力和肌肉一样有极限?
  20. 性能测试-----基础知识

热门文章

  1. js return 闭包为null_那么如何让你的 JS 写得更漂亮?
  2. python文本替换 数据库_用几行python代码实现大量文本文件里的文本替换
  3. junit注释_JUnit注释
  4. iOS警报– UIAlertController
  5. 开课吧:C++入门必知必会的基础知识汇总
  6. 学好C++开发技术能从事哪些岗位?
  7. 产品运营:当你和上级发生争执你会怎么处理?
  8. C++面试题:多态,虚函数,纯虚函数
  9. C语言基础篇,什么是封装,附代码!
  10. 区块链支付平台技术的应用