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 ...
随机推荐
- FireFox不支持InnerText的解决方法
innerText和InnerHTML是非常实用的一个属性,然而在FireFox中不支持此属性,可能是因为考虑到网页的安全性.这样一来为开发者带来了不少麻烦.FireFox中也提供了另外一个属性inn ...
- 编译Linux系统下的jrtplib3.9和jthread1.3(arm和ubuntu)
最近由于学习需要,需要编译jrtplib,网上的资料基本上都是关于3.9以前的版本,而以前的版本基本上都是通过confiugre来配置生成Makefile,而最近的版本却没有这一项,而是使用cmake ...
- 大批量DML操作应该注意什么?
问:大批量DML操作应该注意什么? 答:大批量DML操作可能会撑爆undo表空间,导致数据库挂起.因此我们应该设置一个合适的undo表空间,或对DML操作的分批提交.
- MVC中Controller和Action讲解上篇
一般我们用mvc开发程序时一般需要三个步骤, 创建模型.创建控制器.创建视图 之前开发程序都是按照这样的步骤来开发的,也没有想过mvc的原理,比如route是怎么找到controller的,contr ...
- ios App 打包
ios 版本的 App 打包两种方式: 1. 命令行 xcodebuild exportArchive -exportFormat ipa 2. 通过 xcode Product -> Arch ...
- 在系统方法中调用navigationController的标准写法
在系统方法中调用navigationController的标准写法 -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animat ...
- (转)Linux 文件系统:procfs, sysfs, debugfs 用法简介
网址:http://www.tinylab.org/show-the-usage-of-procfs-sysfs-debugfs/ 1 前言 内核中有三个常用的伪文件系统:procfs,debugfs ...
- 对.net orm工具Dapper在多数据库方面的优化
Dapper是近2年异军突起的新ORM工具,它有ado.net般的高性能又有反射映射实体的灵活性,非常适合喜欢原生sql的程序员使用,而且它源码很小,十分轻便.我写本博客的目的不是为了介绍Dapper ...
- wordpress换域名后无法登陆的解决方案
第一步:登录到你的数据库管理页面,找到wp_options表: 第二步:将表中的siteurl和home字段的值修改为当前的新域名,siteurl值的修改和home值的修改同理.如下图:
- shell复习笔记----用户管理
$ who 可以知道系统上有多少登陆 $who |wc -l 计算用户个数 注意:|是管道符号,可以在两个程序之间建立管道(pipeline):who 的输出,成了 wc 的输入, wc 所列出 ...