背景

又是一道水题

描述

在某个神秘的星球上有一种货币,它有一种奇怪的兑换规则

你有且仅有一枚面值为n的金币,你可以去银行进行兑换,也可以不兑换

如果去银行兑换,兑换的规则是这样的:用面值为a的金币去兑换可以换到a/2,a/3,a/4这三枚硬币(如果

是小数则截尾取整),你可以兑换多次

读入n

输出你最后最多能拥有的钱数w

每个测试点中有T组数据

格式

输入格式

一个数T表示该点的测试数据组数(1=<T<=20 )

下面跟着T行,每行一个整数n(0 <= n <= 1000000000 )

输出格式

输出T行(一一对应)

每行一个整数就是你最后最多拥有的钱数w

样例1

样例输入1[复制]

2
12
2

样例输出1[复制]

13
2

限制

各个测试点3s

提示

小心数据较大,但是不需要高精度

来源

源于spoj;

思路:记忆化搜索;

按照正常的递推是:dp[i]=max(i,dp[i/2]+dp[i/3]+dp[i/2]);

由于给的范围很大,所以不能开那么大的数组。

所以我们记忆化搜索就行:dp[i]=max(i,dp[i/2]+dp[i/3]+dp[i/2]);

 1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<stdlib.h>
5 #include<string.h>
6 #include<math.h>
7 #include<queue>
8 #include<map>
9 using namespace std;
10 typedef long long LL;
11 map<LL,LL>my;
12 LL N=1;
13 LL maxx[1000000];
14 LL dfs(LL n);
15 int main(void)
16 {
17 int i,j,k;
18 scanf("%d",&k);
19 LL n,m;
20 while(k--)
21 {
22 scanf("%lld",&n);
23 printf("%lld\n",dfs(n));
24 }
25 return 0;
26 }
27 LL dfs(LL n)
28 {
29 if(my[n]==0)
30 {
31 my[n]=N++;
32 }
33 else return maxx[my[n]];
34 maxx[my[n]]=n;
35 if(n<=4)
36 {
37 return n;
38 }
39 maxx[my[n]]=max(maxx[my[n]],dfs(n/2)+dfs(n/3)+dfs(n/4));
40 return maxx[my[n]];
41 }

P1599 货币的更多相关文章

  1. JS 将数字转化成为货币格式

    最近由于项目的需要需要将数字format成货币格式,自己搞了半天效果不是很好,博客园有篇问题很好,再次转载记录一下 http://www.cnblogs.com/mingmingruyuedlut/a ...

  2. Java中货币格式化

    private final static NumberFormat CURRENCY_FORMAT = NumberFormat.getCurrencyInstance(Locale.CHINA); ...

  3. Analyzer中进行货币转换

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. POI2005Bank notes银行货币

    Description Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有n种面值的硬币,面值分别为b1, b2,..., bn. 但是每种硬币有数量限制,现在我 ...

  5. Magento显示多货币,Magento 多货币设置

    System - Configuration - Currency Setup 在右边Currency Options里的Allowed currencies勾选, 然后 System - Manag ...

  6. double四舍五入,商品金额大小写转换,设置货币的小数位数跟格式输出,进制转化

      1:计算double值四舍五入的方法 对小数数值进行四舍五入,首先应该确认保留小数位, 如果数值的小数精度大于保留小数位,那么开始四舍五入计算.四舍五入的方法非常简单,在所有要丢失精度的小数位中加 ...

  7. ACM/ICPC 之 SPFA-兑换货币(POJ1860)

    //水题-SPFA解法 //套汇是指兑换货币后能使本金上升 //给定本金货币编号,货币间的汇率和手续费,求能否套汇成功 //Time:16Ms Memory:200K #include<iost ...

  8. SAP 金额在表中的存储及货币转换因子

    场景:一个接口出问题了,SAP通过RFC将SO数据传输到Java系统,错误的将100日元传为1.00日元. 其实查看SAP透明表发现,表中存储的的确是1.00,是前台真实数据的1/100,开发接口时没 ...

  9. DEV 财务货币格式单元格

    在用友金蝶等财务软件中,经常需要输入货币类型的数据, 那么这种输入框要如何制作呢? 扩展DataGridView 的功能  出自在天空飞翔博客 http://www.cnblogs.com/micha ...

随机推荐

  1. 我的分布式微服务框架:YC-Framework

    YC-Framework官方文档:http://framework.youcongtech.com/ YC-Framework源代码:https://github.com/developers-you ...

  2. 大数据学习day39----数据仓库02------1. log4j 2. 父子maven工程(子spring项目的创建)3.项目开发(埋点日志预处理-json数据解析、清洗过滤、数据集成实现、uid回补)

    1. log4j(具体见log4j文档) log4j是一个java系统中用于输出日志信息的工具.log4j可以将日志定义成多种级别:ERROR  /  WARN  /  INFO  /  DEBUG ...

  3. ES5中改变this指向的三种方法

    ES5中提供了三种改变函数中this指针指向的方法,分别如下 1.call() var obj = {username:"孙悟空"}; //没有任何修饰的调用函数,函数中的this ...

  4. 数组相关API,reduce

    reduce() 方法接受一个数组作为输入值并返回一个值.这点挺有趣的.reduce 接受一个回调函数,回调函数参数包括一个累计器(数组每一段的累加值,它会像雪球一样增长),当前值,和索引.reduc ...

  5. JavaScript设计模式,单例模式!

    单例设计模式:保证一个类仅有一个实例,并且提供一个访问它的全局访问点.有些对象只需要一个,这时可用单例模式. 传统的单例模式 和new 创建对象的调用不一样 调用者要调用xxx.getInstance ...

  6. 在JTable单元格上 加入组件,并赋予可编辑能力 [转]

    表格(单元格放置组件) 对于JTable单元格的渲染主要是通过两个接口来实现的,一个是TableCellRenderer另一个是TableCellEditor,JTable默认是用的是DefaultC ...

  7. 数据存储SharePreferences详解

    1.SharedPreferences存储 SharedPreferences时使用键值对的方式来存储数据的,也就是在保存一条数据时,需要给这条数据提供一个对应的键,这样在读取的时候就可以通过这个键把 ...

  8. Linux基础命令---ntpq查询时间服务器

    ntpq ntpq指令使用NTP模式6数据包与NTP服务器通信,能够在允许的网络上查询的兼容的服务器.它以交互模式运行,或者通过命令行参数运行. 此命令的适用范围:RedHat.RHEL.Ubuntu ...

  9. mysql 间隙锁专题

    本文研究记录mysql间隙锁,涉及以下情况 唯一索引 非唯一索引 范围更新 等值更新 mysql8 mysql7 RR RC 数据准备 mysql> select * from vodb.tes ...

  10. Java对象的创建过程:类的初始化与实例化

    一.Java对象创建时机 我们知道,一个对象在可以被使用之前必须要被正确地实例化.在Java代码中,有很多行为可以引起对象的创建,最为直观的一种就是使用new关键字来调用一个类的构造函数显式地创建对象 ...