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]); }