洛谷P2134 百日旅行
2024-08-29 09:47:07
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)左右
最新文章
- 简例 一次执行多条mysql insert语句
- JavaWeb开发学习(二)-配置Tomcat服务器
- 利用IIS应用请求转发ARR实现IIS和tomcat整合共用80端口
- 关于treeview手动添加的方法
- div垂直居中的问题
- GNU make 总结 (一)
- open/write/read
- Solr4.7新建core
- SCJP_104——题目分析(3)
- JavaScript 显示弹出窗口(二)
- 04737_C++程序设计_第9章_运算符重载及流类库
- 对于GetBuffer() 与 ReleaseBuffer() 的一些分析
- Java进制转换示例
- Extensions in UWP Community Toolkit - Overview
- laravel5.7 migrate 时报错 Specified key was too long error 解决方案
- 洛谷P4383 林克卡特树
- 前端模板学习bootstrap
- OpenGL 笔记<;1>; 固定管线实例 + 双缓存测试实例
- excel导入时候日期格式转成date
- datagrid中reoload提交时如何批量提交表单中的查询条件
热门文章
- 5.2 《锋利的jQuery》jQuery对表格的操作(选项卡/换肤)
- LightOJ - 1079 Just another Robbery —— 概率、背包
- javascript(7)
- c++迷宫小游戏
- 分享知识-快乐自己:IDEA 导入(web)项目并部署到 Tomcat
- 运算符-----------instanceof
- Vue 中数据流组件
- MySQL三个列组成唯一值查询_开源中国问题练习_20161026
- 「NOIP2016」「P1850」 换教室(期望dp
- ACM学习历程—HDU4956 Poor Hanamichi(模拟)