假期_codevs3622_dp

来源:互联网 发布:体育数据 编辑:程序博客网 时间:2024/06/05 20:38

Description


经过几个月辛勤的工作,FJ决定让奶牛放假。假期可以在1…N天内任意选择一段(需要连续),每一天都有一个享受指数W。但是奶牛的要求非常苛刻,假期不能短于P天,否则奶牛不能得到足够的休息;假期也不能超过Q天,否则奶牛会玩的腻烦。FJ想知道奶牛们能获得的最大享受指数。

Input


第一行:N,P,Q.
第二行:N个数字,中间用一个空格隔开,每个数都在longint范围内。

Output


一个整数,奶牛们能获得的最大享受指数。

Hint


50%  1N10000
100%  1N100000
1pqn

Analysis


在lca例题集合里的一道dp(AJ真是仔细整理了资料?)
咳咳,f[i]表示以i结尾的最优序列,则有

f[i]=sum[i]min{f[j]}   ipjiq

然后这样就会boom
于是想到了类似的烽火传递,用单调队列优化一下,每次取出最小值

Code


#include <stdio.h>using namespace std;long long sum[100001];int l[100001];int main(){    int n,st,ed;    scanf("%d%d%d",&n,&st,&ed);    sum[0]=0;    for (int i=1;i<=n;i++)    {        int t;        scanf("%d",&t);        sum[i]=sum[i-1]+t;    }    int h=1,t=0;    long long ans=-0x7fffffff;    for (int i=st;i<=n;i++)    {        while (sum[l[t]]>=sum[i-st]&&h<=t)            t--;        l[++t]=i-st;        while (l[h]<i-ed&&h<=t)            h++;        if (ans<sum[i]-sum[l[h]])            ans=sum[i]-sum[l[h]];    }    printf("%lld\n",ans);    return 0;}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 补眉后颜色很淡怎么办 磨砂画出毛了怎么办 纹眉毛不上色怎么办 四岁儿童龋齿怎么办 墙没有刷乳胶漆怎么办 壁纸不想要了怎么办 自粘墙纸撕不掉怎么办 打雷了怎么办主题画 打雷了怎么办小班教案 费雪小火车不走怎么办 宝宝睡觉要开灯怎么办 门上有人做记号怎么办 颜料粘上衣服洗不掉怎么办 半夜有小偷开锁怎么办 幼儿园人数较多怎么办 附近幼儿园拖班招满了怎么办 6个月大宝宝拉肚子怎么办 婴儿容易吐奶怎么办 新生儿睡眠时间颠倒怎么办 婴儿睡觉黑白颠倒怎么办 婴儿黑白颠倒了怎么办 宝宝肠粘膜受损怎么办 dnf会卡换装怎么办? 孩子不讲理蛮横怎么办 孩子不爱上学了怎么办 幼儿园孩子不爱上学怎么办 额头撞肿了怎么办 两岁半宝宝说话晚怎么办 1岁宝宝拉肚子怎么办? 小孩嗓子老哑怎么办 小孩嗓子经常哑怎么办 小孩子一年级成绩差怎么办 小孩子一年级学习成绩差怎么办 楼上有孩子扰民怎么办 隔壁小孩太吵怎么办 楼上孩子太吵怎么办 泰国贴纸签小孩怎么办 六个月宝宝近视怎么办 孩子视力低应该怎么办 儿童视力低常怎么办 视力储备值低怎么办