欢迎来到SFWR的博客

P2134 百日旅行

题目背景

重要的不是去哪里,而是和你在一起。——小红

对小明和小红来说,2014年7月29日是一个美好的日子。这一天是他们相识100天的纪念日。

(小明:小红,感谢你2场大考时默默的支持,100个日夜的陪伴;感谢你照亮我100个美好的日子,给我留下无数美好的回忆……在这个美好的日子里,我准备带你去旅行。)

题目描述

小明和小红还剩下N天的假期,小明可以安排旅行的计划。如果连续X天旅游,小明需要花旅行费用P*X*X元;如果连续X天不旅游,小明需要请小红吃饭,花费为Q*X元。(P,Q都是输入的常数)

请你帮小明写一个程序,计算出假期里他至少需要花费多少元。

输入输出格式

输入格式:

 

一行,3个空格隔开的正整数N,P,Q。

 

输出格式:

 

一行,一个正整数表示小明至少需要花费多少元。

#include<bits/stdc++.h>
using namespace std;
long long int n,p,q;
long long int f[201000][2],a[121321];
int main()
{
    cin>>n>>p>>q;
    int t=q/p;
    for(int i=1;i<=t;i++)a[i]=p*i*i;
    memset(f,63,sizeof(f));
    f[0][0]=f[0][1]=0;
    for(int i=1;i<=n;i++)
    {
        f[i][1]=min(f[i][1],f[i-1][0]+q);
        for(int j=1;j<=t;j++)if(i>=j)f[i][0]=min(f[i][0],f[i-j][1]+a[j]);
    }
    cout<<min(f[n][1],f[n][0]);
}

 

posted @ 2019-05-18 21:50  SFWR  Views(121)  Comments(0Edit  收藏  举报