zoukankan      html  css  js  c++  java
  • AtCoder Grand Contest 044 A

    https://atcoder.jp/contests/agc044/tasks/agc044_a

    题目讲解:https://www.bilibili.com/video/BV1354y1Q7yw?p=4

    代码:

     1 #include <bits/stdc++.h>
     2 typedef long long LL;
     3 #define pb push_back
     4 #define mst(a) memset(a,0,sizeof(a))
     5 const int INF = 0x3f3f3f3f;
     6 const double eps = 1e-8;
     7 const int mod = 1e9+7;
     8 const int maxn = 1e5+10;
     9 using namespace std;
    10 
    11 unordered_map<LL, LL> ump;
    12 LL a, b, c, d, n;
    13 
    14 LL DFS(LL n)
    15 {
    16     if(!n) return 0;
    17     if(n==1) return d;
    18     if(ump[n]) return ump[n];
    19     LL res = 1e18;
    20     if(n < res/d) res = n*d;
    21     res = min(res, n%2*d+DFS(n/2)+a); res = min(res,(2-n%2)*d+DFS((n+1)/2)+a);
    22     res = min(res, n%3*d+DFS(n/3)+b); res = min(res,(3-n%3)*d+DFS((n+2)/3)+b);
    23     res = min(res, n%5*d+DFS(n/5)+c); res = min(res,(5-n%5)*d+DFS((n+4)/5)+c);
    24     ump[n]=res;
    25     return res;
    26 }
    27 
    28 int main()
    29 {
    30     #ifdef DEBUG
    31     freopen("sample.txt","r",stdin); //freopen("data.out", "w", stdout);
    32     #endif
    33     
    34     int T;
    35     scanf("%d",&T);
    36     while(T--)
    37     {
    38         ump.clear();
    39         scanf("%lld %lld %lld %lld %lld",&n, &a, &b, &c, &d);
    40         printf("%lld
    ",DFS(n));
    41     }
    42     
    43     return 0;
    44 }

    -

  • 相关阅读:
    【leetcode】下一个排列
    【leetcode】配对交换
    【leetcode】两个相同字符之间的最长子字符串
    052-126&127
    052-125
    052-124
    052-123
    052-122
    052-121
    052-120
  • 原文地址:https://www.cnblogs.com/jiamian/p/12985116.html
Copyright © 2011-2022 走看看