zoukankan      html  css  js  c++  java
  • P1599 货币

    背景

    又是一道水题

    描述

    在某个神秘的星球上有一种货币,它有一种奇怪的兑换规则
    你有且仅有一枚面值为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
    ",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 }
    油!油!you@
  • 相关阅读:
    JSOI2015 R3 退队滚粗了
    bzoj3774
    bzoj1426
    bzoj3294
    java 位向量
    java 移位操作
    java 枚举类型的使用
    mysql 修改 root 用户密码
    几种数据库连接池的比较
    linux python 安装 pip出现 No module named 'setuptools'
  • 原文地址:https://www.cnblogs.com/zzuli2sjy/p/5489503.html
Copyright © 2011-2022 走看看