Background

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

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

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

Description

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

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

Input

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

Output

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

很明显,这题可以\(DP\)做.

首先,由于我们需要考虑连续有多少天旅游或吃饭.

所以我们可以很容易想到一个\(O(n^2)\)的\(DP\)

设\(f[i]\)代表连续旅游到第\(i\)天的最小花费.

\(g[i]\)代表连续吃饭到第\(i\)天的最小花费.

转移也是很好想的.(我们可以选择在当前第\(i\)天停止旅游或吃饭)

\[f[i]=min(f[i],g[j]+(i-j)^2 \times p) \\ g[i]=min(g[i],f[j]+(i-j)\times q)
\]

代码

memset(f,0x3f,sizeof f);
memset(g,0x3f,sizeof g);
f[0]=g[0]=0;
for(R int i=1;i<=n;i++)
for(R int j=0;j<i;j++)
{
f[i]=min(f[i],g[j]+(i-j)*(i-j)*p);
g[i]=min(g[i],f[j]+(i-j)*q);
}

然后这样的话,我们可以得到\(90pts\)

但是谁不想试一下满分做法?

正解是斜率优化,我不会QAQ

因此考虑贪心做法.

由于请小红吃饭的代价为\(q \times x\)

此时若\(x\)已知则代价也已知。

因此考虑枚举\(x\),即请小红吃饭的天数.

由于不连续的请小红吃饭会比较便宜,所以我们考虑先带她旅游再在中途请她吃饭.

即用吃饭的天数\(i\),将旅游的天数\(n-i\)分成\(i+1\)块.

此时考虑均值不等式,发现均分的时候总花费会最小.

所以考虑均分即可.

代码

#include<cstdio>
#include<cctype>
#include<iostream>
#include<cstring>
#define N 1008
#define R register
using namespace std;
inline void in(int &x)
{
int f=1;x=0;char s=getchar();
while(!isdigit(s)){if(s=='-')f=-1;s=getchar();}
while(isdigit(s)){x=x*10+s-'0';s=getchar();}
x*=f;
}
//int f[N],g[N],n,p,q;
int n,p,q,ans=2147483647LL;
inline int calc(int sum,int sd)
{
int x=sum/sd,y=sum%sd;
return x*x*(sd-y)*p+(x+1)*(x+1)*y*p;
}
int main()
{
in(n),in(p),in(q);
if(q<=p)
{
printf("%d",q*n);
return 0;
}
for(R int i=0;i<=n;i++)
{
int res=n-i,j=i+1;
ans=min(ans,i*q+calc(res,j));
}
printf("%d",ans);
}

DP 贪心【p2134】百日旅行的更多相关文章

  1. luogu P2134 百日旅行

    题目链接 luogu P2134 百日旅行 题解 dp方程好想吧 优化有些玄学惹 不会证.... 不过我会三分和贪心 \滑稽 但还是写dp吧 代码 #include<cstdio> #in ...

  2. 洛谷P2134 百日旅行

    P2134 百日旅行 题目背景 重要的不是去哪里,而是和你在一起.——小红 对小明和小红来说,2014年7月29日是一个美好的日子.这一天是他们相识100天的纪念日. (小明:小红,感谢你2场大考时默 ...

  3. P2134 百日旅行 (斜率优化,DP)

    题目链接 Solution 斜率优化\(DP\). 今天下午才打的第一道题 QwQ... \(90\) 分很简单,一个简单的递推. 令 \(f[i]\) 为最后一天旅游的花费, \(g[i]\) 为最 ...

  4. DP【洛谷P2134】 百日旅行

    [洛谷P2134] 百日旅行 题目背景 重要的不是去哪里,而是和你在一起.--小红 对小明和小红来说,2014年7月29日是一个美好的日子.这一天是他们相识100天的纪念日. (小明:小红,感谢你2场 ...

  5. 【bzoj4027】[HEOI2015]兔子与樱花 树形dp+贪心

    题目描述 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接,我们可以把它 ...

  6. BZOJ 2021 [Usaco2010 Jan]Cheese Towers:dp + 贪心

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2021 题意: John要建一个奶酪塔,高度最大为m. 他有n种奶酪.第i种高度为h[i]( ...

  7. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)

    洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...

  8. 【BZOJ-1046】上升序列 DP + 贪心

    1046: [HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3723  Solved: 1271[Submit][Stat ...

  9. Codeforces 675E Trains and Statistic(DP + 贪心 + 线段树)

    题目大概说有n(<=10W)个车站,每个车站i卖到车站i+1...a[i]的票,p[i][j]表示从车站i到车站j所需买的最少车票数,求所有的p[i][j](i<j)的和. 好难,不会写. ...

随机推荐

  1. [NOIP2002] 字串变换 宽搜+深度优化

    这道题硬是让我用STL水过.......而且题解里说的什么双向宽搜,交替扩展............... 这道题反正,STL用就用吧,但是状态数可以卡到千亿级别,因为这个东西是阶乘扩展的,然后我们发 ...

  2. POJ1459:Power Network(多源点多汇点的最大流)

    Power Network Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 31086   Accepted: 15986 题 ...

  3. 修改centos的源

    最近都在使用国内的VPS.系统统一使用的都是Linux系统.但是,有一些服务商的系统给默认设置的是国外的.这样就会导致下载速度缓慢.于是,找到了国内几家比较热门的镜像点.奉献给大家.下面的镜像全部支持 ...

  4. JAVASCRIPT和JSP计算闰年

    0x01:JAVASCRIPT 实现 <h1 align="left">求闰年</h1> 开始年份: <input type="text&q ...

  5. Linux引导过程

    早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序.尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行 ...

  6. 【LA3487】最小割-经典模型 两种方法

    题目链接 题意:A.B两个公司要买一些资源(他们自己买的资源不会重复),一个资源只能卖给一个公司.问最大收益. simple input 部分: 54 1 //买到1就给54元 15 2 33 3 2 ...

  7. loj6043 「雅礼集训 2017 Day7」蛐蛐国的修墙方案

    传送门:https://loj.ac/problem/6043 [题解] 我们考虑这是个置换,所以一定形成了很多不相交的环. 对于每个环,我们只能选一段.不选.选一段.不选这样交替下去. 显然只有偶环 ...

  8. [POJ2954&POJ1265]皮克定理的应用两例

    皮克定理: 在一个多边形中.用I表示多边形内部的点数,E来表示多边形边上的点数,S表示多边形的面积. 满足:S:=I+E/2-1; 解决这一类题可能运用到的: 求E,一条边(x1,y1,x2,y2)上 ...

  9. SSM初步整合一

    SSM(spring+springmvc+mybatis)初步整合一配置步骤: 步骤一.导入所需jar包 步骤二 .配置web.xml文件 <?xml version="1.0&quo ...

  10. [bzoj1486][HNOI2009]最小圈——分数规划+spfa+负环

    题目 传送门 题解 这个题是一个经典的分数规划问题. 把题目形式化地表示,就是 \[Minimize\ \lambda = \frac{\sum W_{i, i+1}}{k}\] 整理一下,就是 \[ ...