P2134 百日旅行

题目背景

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

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

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

题目描述

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

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

输入输出格式

输入格式:

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

输出格式:

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

输入输出样例

输入样例#1:

6 1 7
输出样例#1:

20

说明

对于20%数据,N<=20。

对于90%数据,N<=1000,P<=2000,Q<=10000.

对于剩下的10%数据,N<=200000,Q<=P<=10000。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,p,q;
long long ans=;
void dfs(int now,int s1,int s2,long long sum){
if(sum>=ans)return;
if(now==n+){
if(s1)sum+=1LL*s1*s1*p;
if(s2)sum+=1LL*s2*q;
ans=min(ans,sum);
return;
}
if(s2){
dfs(now+,,,sum+1LL*s2*q);
dfs(now+,,s2+,sum);
return;
}
else if(s1){
dfs(now+,,,sum+1LL*s1*s1*p);
dfs(now+,s1+,,sum);
return;
}
else {
dfs(now+,,,sum);
dfs(now+,,,sum);
}
}
int main(){
//freopen("Cola.txt","r",stdin);
scanf("%d%d%d",&n,&p,&q);
dfs(,,,);
cout<<ans;
}

20分 暴力深搜

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int f[],ff[];
int n,m,p,q;
int main(){
scanf("%d%d%d",&n,&p,&q);
for(int i=;i<=n;i++){
f[i]=ff[i]=1e9;
for(int j=;j<i;j++){
f[i]=min(f[i],ff[j]+(i-j)*(i-j)*p);
ff[i]=min(ff[i],f[j]+(i-j)*q);
}
}
printf("%d",min(f[n],ff[n]));
}

90分 O(n^2)的暴力dp

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
using namespace std;
const int N=;
int f[N],ff[N],g;
int n,m,p,q;
int main()
{
scanf("%d%d%d",&n,&p,&q);
if(q<=p){printf("%d",q*n);return ;}
for(int i=;i<=n;i++){
for(int j=g+;j<i;j++)
if(f[g]+(i-g)*(i-g)*p>f[j]+(i-j)*(i-j)*p)g=j;
f[i]=min(f[i-],ff[i-])+q;
ff[i]=f[g]+(i-g)*(i-g)*p;
}
printf("%d",min(f[n],ff[n]));
}

100分 优化dp O(nlogn)左右

最新文章

  1. 简例 一次执行多条mysql insert语句
  2. JavaWeb开发学习(二)-配置Tomcat服务器
  3. 利用IIS应用请求转发ARR实现IIS和tomcat整合共用80端口
  4. 关于treeview手动添加的方法
  5. div垂直居中的问题
  6. GNU make 总结 (一)
  7. open/write/read
  8. Solr4.7新建core
  9. SCJP_104——题目分析(3)
  10. JavaScript 显示弹出窗口(二)
  11. 04737_C++程序设计_第9章_运算符重载及流类库
  12. 对于GetBuffer() 与 ReleaseBuffer() 的一些分析
  13. Java进制转换示例
  14. Extensions in UWP Community Toolkit - Overview
  15. laravel5.7 migrate 时报错 Specified key was too long error 解决方案
  16. 洛谷P4383 林克卡特树
  17. 前端模板学习bootstrap
  18. OpenGL 笔记&lt;1&gt; 固定管线实例 + 双缓存测试实例
  19. excel导入时候日期格式转成date
  20. datagrid中reoload提交时如何批量提交表单中的查询条件

热门文章

  1. 5.2 《锋利的jQuery》jQuery对表格的操作(选项卡/换肤)
  2. LightOJ - 1079 Just another Robbery —— 概率、背包
  3. javascript(7)
  4. c++迷宫小游戏
  5. 分享知识-快乐自己:IDEA 导入(web)项目并部署到 Tomcat
  6. 运算符-----------instanceof
  7. Vue 中数据流组件
  8. MySQL三个列组成唯一值查询_开源中国问题练习_20161026
  9. 「NOIP2016」「P1850」 换教室(期望dp
  10. ACM学习历程—HDU4956 Poor Hanamichi(模拟)