剩下 n天的假期,小明可以安排旅行的计划。

如果连续 xx 天旅游,小明需要花旅行费用 p*x*x 元;如果连续 x 天不旅游,小明吃饭,花费为 q*x

计算出他至少需要花费多少元。

 

 

需要斜率优化,这里先写下暴力,后面学了再补

 

#include<iostream>
#include <algorithm>
#include <cstring>
using namespace std;
 const int N=1e3+10;
 
 int n,p,q,f[N][2];
 
 signed main(){
     int i,j,x;
     cin>>n>>p>>q;
     memset(f,127,sizeof f);
    f[0][0]=f[0][1]=0;
    
     for(i=1;i<=n;i++)
      for(j=0;j<i;j++)
     x=i-j,f[i][0]=min(f[i][0],f[j][1]+p*x*x),
     f[i][1]=min(f[i][1],f[j][0]+q*x);    
     
     cout<<min(f[n][0],f[n][1]);
 }
 

 

posted on 2022-11-10 21:15  towboat  阅读(17)  评论(0)    收藏  举报