Codeforces 710 E. Generate a String (dp)

Posted Recoder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

以上是关于Codeforces 710 E. Generate a String (dp)的主要内容,如果未能解决你的问题,请参考以下文章

codeforces 710A King Moves(水)

Codeforces Round #710 (Div. 3)

(DP)codeforces - 710E Generate a String

codeforces 710E Generate a String(简单dp)

codeforces 710D Two Arithmetic Progressions(线性同余方程)

CodeForces 710C Magic Odd Square