SCOI2010 and SXOI2014 股票交易(DP)
明显的单调队列……
但下面的程序一直有bug
附上题解:http://blog.csdn.net/njlcazl/article/details/8611042
附上我的代码:
var head,tail,i,n,maxp,w,t,ans,j:longint;
as,bs,ap,bp,q,val:array[..] of longint;
f:array[..,..] of longint;
function max(x,y:longint):longint;
begin
if x>y then exit(x) else exit(y);
end;
procedure init;
begin
readln(n,maxp,w);ans:=;
for i:= to n do readln(ap[i],bp[i],as[i],bs[i]);
end;
procedure main;
begin
fillchar(f,sizeof(f),);
f[,]:=;
for i:= to n do
begin
for j:= to as[i] do f[i,j]:=-j*ap[i];
for j:= to as[i] do
f[i,j]:=max(f[i,j],f[i-,j]);
t:=i-w-;
if t>= then
begin
head:=;tail:=;
for j:= to maxp do
begin
while (head<tail) and (q[head]<j-as[i]) do inc(head);
while (head<tail) and (f[t,j]+j*ap[i]>=val[tail-]) do dec(tail);
val[tail]:=f[t,j]+j*ap[i];
q[tail]:=j;inc(tail);
if head<tail then f[i,j]:=max(f[i,j],val[head]-j*ap[i]);
end;
head:=;tail:=;
for j:=maxp downto do
begin
while (head<tail) and (q[head]>j+bs[i]) do inc(head);
while (head<tail) and (f[t,j]+j*bp[i]>=val[tail-]) do dec(tail);
val[tail]:=f[t,j]+j*bp[i];
q[tail]:=j;inc(tail);
if head<tail then f[i,j]:=max(f[i,j],val[head]-j*bp[i]);
end;
end;
ans:=max(ans,f[i,]);
end;
writeln(ans);
end;
begin
init;
main;
end.
还有另一位oier的代码:
type
ji=record
w,s:longint;
end;
var
q:array[..] of ji;
f:array[-..,..] of longint;
x,i,j,k,head,tail,t,maxp,w,api,bpi,asi,bsi:longint; function max(x,y:longint):longint;
begin
if x>y then exit(x);
exit(y);
end; begin
readln(t,maxp,w);
for i:=-t to t do
for j:= to maxp do
f[i,j]:=-;
for i:= to t do
begin
readln(api,bpi,asi,bsi);
head:=;
tail:=;
f[i]:=f[i-];
q[].s:=;
q[].w:=f[i-w-,];
for j:= to maxp do
begin
inc(tail);
q[tail].w:=f[i-w-,j]+j*api;
q[tail].s:=j;
while (head<tail)and(q[tail-].w<q[tail].w) do
begin
q[tail-]:=q[tail];
dec(tail);
end;
while (head<=tail)and(q[tail].s<j-asi) do inc(head);
f[i,j]:=max(f[i,j],q[head].w-api*j);
end;
head:=;
tail:=;
q[].s:=maxp;
q[].w:=f[i-w-,maxp]+maxp*bpi;
for j:=maxp- downto do
begin
inc(tail);
q[tail].w:=f[i-w-,j]+j*bpi;
q[tail].s:=j;
while (head<=tail)and(q[tail].w<x) do
begin
q[tail-]:=q[tail];
dec(tail);
end;
while (head<=tail)and(q[head].s>j+bsi) do inc(head);
f[i,j]:=max(f[i,j],q[head].w-j*bpi);
end;
end;
writeln(f[t,]);
end.
这两种代码方法是一样的,但求解的过程不一样,可以挑选自己喜欢的来写。
ps:这两个代码都有bug,在bzoj上都是wa……
SCOI2010 and SXOI2014 股票交易(DP)的更多相关文章
- 【BZOJ1855】[Scoi2010]股票交易 DP+单调队列
[BZOJ1855][Scoi2010]股票交易 Description 最近lxhgww又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律. 通过一段时间的观察,lxhgww预 ...
- P2569 [SCOI2010]股票交易 dp 单调队列优化
LINK:股票交易 题目确实不算难 但是坑点挺多 关于初值的处理问题我就wa了两次. 所以来谢罪. 由于在手中的邮票的数量存在限制 且每次买入卖出也有限制. 必然要多开一维来存每天的邮票数量. 那么容 ...
- 1855: [Scoi2010]股票交易[单调队列优化DP]
1855: [Scoi2010]股票交易 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1083 Solved: 519[Submit][Status] ...
- BZOJ 1855: [Scoi2010]股票交易(DP+单调队列)
1855: [Scoi2010]股票交易 Description 最近lxhgww又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律. 通过一段时间的观察,lxhgww预测到了未 ...
- [SCOI2010]股票交易(单调队列优化dp)
[SCOI2010]股票交易 题目描述 最近lxhgww又迷上了投资股票,通过一段时间的观察和学习,他总结出了股票行情的一些规律. 通过一段时间的观察,lxhgww预测到了未来T天内某只股票的走势,第 ...
- 单调队列优化DP || [SCOI2010]股票交易 || BZOJ 1855 || Luogu P2569
题面:P2569 [SCOI2010]股票交易 题解: F[i][j]表示前i天,目前手中有j股的最大收入Case 1:第i天是第一次购买股票F[i][j]=-j*AP[i]; (1<=j< ...
- bzoj1855: [Scoi2010]股票交易--单调队列优化DP
单调队列优化DP的模板题 不难列出DP方程: 对于买入的情况 由于dp[i][j]=max{dp[i-w-1][k]+k*Ap[i]-j*Ap[i]} AP[i]*j是固定的,在队列中维护dp[i-w ...
- 洛谷P2569 股票交易 [SCOI2010] dp
正解:dp+单调队列优化 解题报告: 先放个传送门鸭qwq umm首先dp转移挺好想的?就买和不买 f[i][j]表示第i天手上有j的股份的最多钱,转移也很好想?就枚举第1天到第i-w-1天枚举买k股 ...
- 2018.09.10 bzoj1855: [Scoi2010]股票交易(单调队列优化dp)
传送门 单调队列优化dp好题. 有一个很明显的状态设置是f[i][j]表示前i天完剩下了j分股票的最优值. 显然f[i][j]可以从f[i-w-1][k]转移过来. 方程很好推啊. 对于j<kj ...
随机推荐
- WordPress非插件添加文章浏览次数统计功能
一: 转载:http://www.jiangyangangblog.com/26.html 首先在寻找到functions.php.php文件夹,在最后面 ?> 的前面加入下面的代码 func ...
- eclipse 安装egit 成功后Team中没有显示
主要是版本不太对. 在http://wiki.eclipse.org/EGit/FAQ#Where_can_I_find_older_releases_of_EGit.3F 中找到对应的版本,设置就O ...
- Vi 几个实用的命令
vi有三种工作模式:指令模式.编辑模式和命令模式. 我们从打开vi说起,这样可以确定下学习环境,也方便学习者实践.打开vi,当前模式即为指令模式,此时可以按a, i, 或o进入编辑模式,或按:(冒号) ...
- 简单的异步任务工具——rq 的使用教程
rq是一个简单的,轻量级的异步任务工具. 如果在网站中用户发起一个用时很久(大于2分钟)的请求,如果用同步的方式,服务器就会返回超时. 这时候就需要用异步请求,用户发起请求后,服务端把作业扔给另一个进 ...
- Unity3D游戏开发——Asset Server搭建
本系列文章由 Amazonzx 编写,欢迎转载,转载请注明出处. http://blog.csdn.net/amazonzx/article/details/7980117 Asset Server是 ...
- EXTJS 4.2 资料 控件之textfield文本框加事件的用法
{ xtype: "textfield", width: 100, id: "txtGroupName", name: "txtGroupName&q ...
- EXTJS 3.0 资料 控件之 html 潜入label用法
这是在Extjs 中插入html 控件label! html: "<div><label id='howMany'>您共选中了</label><br ...
- JavaScript中创建字典对象(dictionary)实例
这篇文章主要介绍了JavaScript中创建字典对象(dictionary)实例,本文直接给出了实现的源码,并给出了使用示例,需要的朋友可以参考下 对于JavaScript来说,其自身的Array对象 ...
- 编写你的第一个 Django 程序 第2部分
原地址:http://django-chinese-docs.readthedocs.org/en/latest/intro/tutorial02.html 本教程上接 教程 第1部分 . 我们将继续 ...
- Ubuntu环境下手动配置zookeeper
配置zookeeper 注意:因为是单机伪分布式配置,故同一机器上有3个server zookeeper文件格式如下 home---zookeeper---server0---zookeeper | ...