hdu 4374 单调队列优化动态规划
思路:我只想说,while(head<=rear&&que[rear].val+sum[j]-sum[que[rear].pos-1]<=dp[i-1][j]+num[i-1][j])表达式中,我把最后的num[i-1][j]丢了,检查了一整天啊!一整天!我那丢失的时间!
寻找从上一层到该层中最优的转换点,如果该转化点到该点超过t就出队。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define Maxn 110
#define Maxm 10010
#define inf 1000000000
using namespace std;
int dp[Maxn][Maxm],sum[Maxm],num[Maxn][Maxm];
int que[Maxm*];
void init()
{
memset(sum,,sizeof(sum));
memset(num,,sizeof(num));
}
inline int ReadInt()
{
int flag = ;
char ch;
int a = ;
while((ch = getchar()) == ' ' || ch == '\n');
if(ch == '-') flag = -;
else
a += ch - '';
while((ch = getchar()) != ' ' && ch != '\n')
{
a *= ;
a += ch - '';
}
return flag * a;
}
int main()
{
int n,m,x,t,i,j,head,rear;
while(scanf("%d%d%d%d",&n,&m,&x,&t)!=EOF){
init();
for(i=;i<=n;i++){
for(j=;j<=m;j++){
num[i][j]=ReadInt();
dp[i][j]=-inf;
}
}
memset(dp[],-,sizeof(dp));
dp[][x]=;
for(i=;i<=n;i++){
memset(sum,,sizeof(sum));
head=,rear=;
for(j=;j<=m;j++){
sum[j]=sum[j-]+num[i][j];
while(head<=rear&&dp[i-][que[rear]]+sum[j]-sum[que[rear]-]<=dp[i-][j]+num[i][j])
rear--;
que[++rear]=j;
while(j-que[head]>t&&head<=rear)
head++;
if(head<=rear)
dp[i][j]=dp[i-][que[head]]+sum[j]-sum[que[head]-];
}
head=,rear=;
memset(sum,,sizeof(sum));
for(j=m;j>=;j--){
sum[j]=sum[j+]+num[i][j];
while(head<=rear&&dp[i-][que[rear]]+sum[j]-sum[que[rear]+]<=dp[i-][j]+num[i][j])
rear--;
que[++rear]=j;
while(que[head]-j>t&&head<=rear)
head++;
if(head<=rear)
dp[i][j]=max(dp[i][j],dp[i-][que[head]]+sum[j]-sum[que[head]+]);
}
}
int ans=-inf;
for(i=;i<=m;i++)
ans=max(ans,dp[n][i]);
printf("%d\n",ans);
}
return ;
}
hdu 4374 单调队列优化动态规划的更多相关文章
- hdu 3401 单调队列优化动态规划
思路: 动态方程很容易想到dp[i][j]=max(dp[i][j],dp[i-w-1][j-k]-k*ap[i],dp[i-w-1][j+k]+k*bp[i]): dp[i][j]表示第i天拥有j个 ...
- hdu 3401 单调队列优化DP
Trade Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- HDU 2191 - 单调队列优化多重背包
题目: 传送门呀传送门~ Problem Description 急!灾区的食物依然短缺! 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种 ...
- hdu 3401 单调队列优化+dp
http://acm.hdu.edu.cn/showproblem.php?pid=3401 Trade Time Limit: 2000/1000 MS (Java/Others) Memor ...
- poj 3017 单调队列优化动态规划
思路:dp[i]=min{dp[j]+max(num[j+1]...num[i])},其中sum[i]-sum[j]<=m. 那么我们需要用单调队列维护j到i的最大值. #include< ...
- hdu 4374 单调队列
求一个最大k连续的子序列和 单调队列 #include<stdio.h> #include<string.h> #include<iostream> using ...
- HDU 3507 单调队列 斜率优化
斜率优化的模板题 给出n个数以及M,你可以将这些数划分成几个区间,每个区间的值是里面数的和的平方+M,问所有区间值总和最小是多少. 如果不考虑平方,那么我们显然可以使用队列维护单调性,优化DP的线性方 ...
- Luogu 2627 修建草坪 (动态规划Dp + 单调队列优化)
题意: 已知一个序列 { a [ i ] } ,求取出从中若干不大于 KK 的区间,求这些区间和的最大值. 细节: 没有细节???感觉没有??? 分析: 听说有两种方法!!! 好吧实际上是等价的只是看 ...
- 【单调队列优化dp】HDU 3401 Trade
http://acm.hdu.edu.cn/showproblem.php?pid=3401 [题意] 知道之后n天的股票买卖价格(api,bpi),以及每天股票买卖数量上限(asi,bsi),问他最 ...
随机推荐
- #elif
http://baike.sogou.com/v72031124.htm?fromTitle=%23elif #else指令用于某个#if指令之后,当前面的#if指令的条件不为真时,就编译#else后 ...
- POJ 3660 Cow Contest (Floyd)
http://poj.org/problem?id=3660 题目大意:n头牛两两比赛经过m场比赛后能判断名次的有几头可转 化为路径问题,用Floyd将能够到达的路径标记为1,如果一个点能 够到达剩余 ...
- MFC编辑框换行实现
MFC中换行实现 在mfc中编辑框允许输入多行时,换行符被表示为<归位><换行>即“\r\n”,用ascii码表示为13 10 如果为编辑框中想要输入换行,就请将编辑框的属性: ...
- 如何关闭dell inspiron n4010的内置麦克
如何关闭dell inspiron n4010的内置麦克 dell inspiron n4010这款电脑的内置麦克是默认开启的,如果你的扩音器音量开得稍大,当你打字的时候就会听到回音,最讨厌的是,当你 ...
- 剑指OFFER之二进制中1的个数(九度OJ1513)
题目描述: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 输入: 输入可能包含多个测试样例.对于每个输入文件,第一行输入一个整数T,代表测试样例的数量.对于每个测试样例输入为一个整 ...
- 移植FreeModbus+ModbusMaster+STM32至RT-Thread(初步)
一.项目描述 目前操作系统在嵌入式软件行业非常流行,在工控组网方面,以后可能会经常使用到Modbus主机+操作系统.Modbus从机+操作系统甚至Modbus主机+Modbus从机+操作系统.但是操作 ...
- hdu 5565 Clarke and baton 二分
Clarke and baton Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...
- delphi 动态建立WebBrower
//Delphi动态建立WebBrowerunit Main;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphi ...
- [Javascript] Manipulate the DOM with the classList API
Learn how to add, remove and test for CSS classes using the classList API. It's more powerful than u ...
- [AngularJS] New in Angular 1.3 - bindToController
If you want to use controllers, instead of a link function, you can use bindToController. <!DOCTY ...