2016级算法第四次上机-C.AlvinZH的1021实验
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实验相关推荐
- 2016级算法第四次上机-B ModricWang的序列问题
1019 ModricWang的序列问题 思路 此题题意非常清晰,给定一个序列,求出最长上升子序列的长度.从数据规模来看,需要\(O(nlogn)\) 的算法. \(O(nlongn)\) 求最长上升 ...
- 2016级算法第五次上机-E.AlvinZH的学霸养成记IV
1039 AlvinZH的学霸养成记IV 思路 难题,最大二分图匹配. 难点在于如何转化问题,n对n,一个只能攻击一个,判断是否存在一种攻击方案我方不死团灭对方.可以想到把所有随从看作点,对于可攻击的 ...
- 2016级算法第六次上机-D.AlvinZH的学霸养成记V
1081 AlvinZH的学霸养成记V 思路 中等题,计算几何. 这是一个排序问题,按极角排序.可以转化为叉积的应用,对于点A和B,通过叉积可以判断角度大小,共线时再判断距离. 叉积的应用.OA × ...
- 2016级算法第六次上机-A.Bamboo之寻找小金刚
Bamboo之寻找小金刚 分析 可以抽象为许多连续线段,分别计数左拐和右拐的个数.考察叉积的基础应用. 假设ABC三点构成一个夹角∠ABC,B就是拐点,AC是辅助形成夹角.考虑线段AB和BC形成的向量 ...
- 2016级算法第五次上机-C.Bamboo和Coco
1064 Bamboo和"Coco" 分析题意 每个亡灵至少一个花瓣,相邻的亡灵中思念值高的要获得的花瓣高(思念值相等是不需要花瓣一样多的).主要考贪心思路,为了使得花瓣总量最少, ...
- 2016级算法第三次上机-G.Winter is coming
904 Winter is coming 思路 难题.首先简化问题, \(n\) 个0与 \(m\) 个1排成一列,连续的0不能超过x个,连续的1不能超过y个,求排列方法数. 显然会想到这是动态规划. ...
- 2016级算法期末上机-H.难题·AlvinZH's Fight with DDLs III
1119 AlvinZH's Fight with DDLs III 思路 难题,最小点覆盖. 分析题意,某一个任务,既可以在笔记本A的 \(a\) 模式下完成,也可以在笔记本B的 \(b\) 模式下 ...
- 2016级算法期末上机-F.中等·AlvinZH's Fight with DDLs II
1118 AlvinZH's Fight with DDLs II 思路 中等题,贪心. 理解题意,每次攻击中,可以使某个敌人生命值-1,自己生命值减去∑存活敌人总攻击力. 贪心思想,血量少攻击高的要 ...
- 2016级算法第二次上机-F.ModricWang's Number Theory II
891 ModricWang's Number Theory II 思路 使得序列的最大公约数不为1,就是大于等于2,就是找到一个大于等于2的数,它能够整除序列中的所有数. 考虑使得一个数d整除数组中 ...
最新文章
- Spring学习总结(4)——Spring AOP教程
- 二叉树中序遍历方法实现
- TCP/IP总结(4)TCP之数据传输过程
- 人工智能学习--文本检测实践
- spark on yarn参数: 任务优先级
- python request url 转义_Python多线程抓取Google搜索链接网页
- java中 若干,Java中的随机数发生器。产生若干的复杂性
- java棋盘覆盖分治法_【单选题】实现棋盘覆盖算法利用的算法是( )
A. 分治法 B. 动态规划法 C. 贪心法 D. 回溯法...
- 与Adobe Reader安装有关的报错处理
- 北美电影票房Top10-2019年12月27日:《小妇人》表现亮眼
- RapidXML的读写
- Java面向对象编程三大特征 - 封装
- H5调用微信扫一扫识别二维码
- steam错误代码 -118 ; 443/80或其他端口被占用,请关闭占用该端口的进程后再点击启动服务 ; 关闭端口进程
- 全网最详细教程(上):教你如何从0-1制作出一张可视化大屏
- 抱抱脸(hugging face)教程-中文翻译-使用 Tokenizers 的 tokenizers
- Kylin多维分析引擎(四):Kylin Cude构建流程详解
- 点击发票填开就出现金税盘处于报税期,不能开票,怎么回事呢?
- 自控力读书笔记:第三章 累到无力抵抗:为什么自控力和肌肉一样有极限?
- 性能测试-----基础知识