Educational Codeforces Round 16 E 题 Generate a String

原创 2016年08月30日 16:34:54

Generate a String
time limit per test
2 seconds
memory limit per test
512 megabytes
input
standard input
output
standard output

zscoder wants to generate an input file for some programming competition problem.

His input is a string consisting of n letters 'a'. He is too lazy to write a generator so he will manually generate the input in a text editor.

Initially, the text editor is empty. It takes him x seconds to insert or delete a letter 'a' from the text file and y seconds to copy the contents of the entire text file, and duplicate it.

zscoder wants to find the minimum amount of time needed for him to create the input file of exactly n letters 'a'. Help him to determine the amount of time needed to generate the input.

Input

The only line contains three integers nx and y (1 ≤ n ≤ 1071 ≤ x, y ≤ 109) — the number of letters 'a' in the input file and the parameters from the problem statement.

Output

Print the only integer t — the minimum amount of time needed to generate the input file.

Examples
input
8 1 1
output
4
input
8 1 10
output
8

     题意:输入一个数n,x,y  n表示生成字符的个数,每增加一个字符a需要x时间,是复制前面的串需要y时间。

   求生成n个字符a至少需要多长时间。

我们用dp[i]表示生成i个字符需要时间当i是偶数时,dp[i]=min(dp[i-1]+x,dp[i/2]+y)(增加或复制); 当i为奇数时,dp[i]=min(dp[i-1]+x,dp[(i+1)/2]+x+y)(增加或复制和删除)。



#include<stdio.h>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<stdlib.h>
#include<stack>
#include<vector>
#include<string.h>
#include<map>
#define INF 0x3f3f3f3f3f
using namespace std;
long long dp[10000009];

int main()
{
    int n;
    long long  x,y;
    scanf("%d%I64d%I64d",&n,&x,&y);
    dp[0]=0;
    dp[1]=x;
    for(int i=2;i<=n;i++)
    {
        if(i%2==0)
            dp[i]=min(dp[i-1]+x,dp[i/2]+y);
        else
            dp[i]=min(dp[i-1]+x,dp[i/2+1]+y+x);
    }
    printf("%I64d\n",dp[n]);


}










版权声明:本文为博主原创文章,未经博主允许不得转载。

Codeforces Round #406 (Div. 2):C. Berzerk(记忆化搜索解决博弈问题)

C. Berzerk time limit per test 4 seconds memory limit per test 256 megabytes input standard in...
  • Jaihk662
  • Jaihk662
  • 2017年03月24日 15:23
  • 781

【Codeforces Round 375 (Div 2) E】【欧拉回路Fleury算法 或网络流】One-Way Reform 每条边定向使得最多的点满足入度=出度

E. One-Way Reform time limit per test 2 seconds memory limit per test 256 megabytes ...
  • snowy_smile
  • snowy_smile
  • 2016年10月04日 10:20
  • 733

【Educational Codeforces Round 1B】【字符串平移 水题】Queries on a String 字符串平移水题

B. Queries on a String time limit per test 2 seconds memory limit per test 256 megabytes...
  • snowy_smile
  • snowy_smile
  • 2015年11月19日 09:16
  • 372

Codeforces 375D 数据结构(好题中的好题, 4解)

题目链接:http://codeforces.com/problemset/problem/375/D 全部代码: 题意:给你一棵树n个点,m次询问(n=100000,m=100000),每个节点有一...
  • c3568
  • c3568
  • 2014年03月25日 19:38
  • 1422

CodeForces 171F(千古神题。。)

CF神题
  • sky_miange
  • sky_miange
  • 2015年02月12日 19:01
  • 600

【动态规划】【最短路】Codeforces 710E Generate a String

题目链接:   http://codeforces.com/problemset/problem/710/E 题目大意:   问写N个字符的最小花费,写一个字符或者删除一个字符花费A,将当前的...
  • u010568270
  • u010568270
  • 2016年08月23日 00:41
  • 601

16初出茅庐E题

E 时间排序
  • cb_never_give_up
  • cb_never_give_up
  • 2016年01月22日 02:07
  • 221

codeforces 627 problem A 好题呀,感觉学到了挺多的 亦或

A. XOR Equation time limit per test 2 seconds memory limit per test 256 megabytes input standa...
  • zcj5027
  • zcj5027
  • 2016年03月24日 21:11
  • 691

codeforces Line 7C (拓展欧几里德+思想 模板) 好题

C. Line Description A line on the plane is described by an equation Ax + By + C = 0. You are to f...
  • yanghui07216
  • yanghui07216
  • 2015年10月24日 21:04
  • 379

Codeforces 798D Mike and distribution【思维+贪心】好题!好题!感觉智商受到了一万点伤害= =

D. Mike and distribution time limit per test 2 seconds memory limit per test 256 megabytes ...
  • mengxiang000000
  • mengxiang000000
  • 2017年05月03日 21:19
  • 403
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Educational Codeforces Round 16 E 题 Generate a String
举报原因:
原因补充:

(最多只允许输入30个字)