zoukankan      html  css  js  c++  java
  • Codeforces 710 E. Generate a String (dp)

    题目链接:http://codeforces.com/problemset/problem/710/E

    加或者减一个字符代价为x,字符数量翻倍代价为y,初始空字符,问你到n个字符的最小代价是多少。

    dp[i]表示i个字符的最小代价。

    当i为偶数个的时候,由+1或者*2得到。

    当i为奇数个的时候,由+1或者*2-1得到。

     1 //#pragma comment(linker, "/STACK:102400000, 102400000")
     2 #include <algorithm>
     3 #include <iostream>
     4 #include <cstdlib>
     5 #include <cstring>
     6 #include <cstdio>
     7 #include <vector>
     8 #include <cmath>
     9 #include <ctime>
    10 #include <list>
    11 #include <set>
    12 #include <map>
    13 using namespace std;
    14 typedef __int64 LL;
    15 typedef pair <int, int> P;
    16 const int N = 1e7 + 5;
    17 LL dp[N];
    18 
    19 int main()
    20 {
    21     int n;
    22     LL x, y;
    23     cin >> n >> x >> y;
    24     dp[1] = x;
    25     for(int i = 2; i <= n; ++i) {
    26         if(i&1) {
    27             dp[i] = min(dp[i - 1] + x, dp[i / 2 + 1] + x + y);
    28         } else {
    29             dp[i] = min(dp[i / 2] + y, dp[i - 1] + x);
    30         }
    31     }
    32     cout << dp[n] << endl;
    33     return 0;
    34 }
  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    flutter webview_flutter 设置cookies
    flutter richText富文本
    flutter 安卓再次点击返回退出应用
  • 原文地址:https://www.cnblogs.com/Recoder/p/5837939.html
Copyright © 2011-2022 走看看