洛谷p1725琪露诺

Soda Soda     2022-08-28     483

关键词:

P1725 琪露诺

题目描述

在幻想乡,琪露诺是以笨蛋闻名的冰之妖精。某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来。但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸。于是琪露诺决定到河岸去追青蛙。小河可以看作一列格子依次编号为0到N,琪露诺只能从编号小的格子移动到编号大的格子。而且琪露诺按照一种特殊的方式进行移动,当她在格子i时,她只会移动到i+L到i+R中的一格。你问为什么她这么移动,这还不简单,因为她是笨蛋啊。每一个格子都有一个冰冻指数A[i],编号为0的格子冰冻指数为0。当琪露诺停留在那一格时就可以得到那一格的冰冻指数A[i]。琪露诺希望能够在到达对岸时,获取最大的冰冻指数,这样她才能狠狠地教训那只青蛙。但是由于她实在是太笨了,所以她决定拜托你帮它决定怎样前进。开始时,琪露诺在编号0的格子上,只要她下一步的位置编号大于N就算到达对岸。

输入输出格式

输入格式:

 

第1行:3个正整数N, L, R

第2行:N+1个整数,第i个数表示编号为i-1的格子的冰冻指数A[i-1]

 

输出格式:

 

一个整数,表示最大冰冻指数。保证不超过2^31-1

 

输入输出样例

输入样例#1:
5 2 3
0 12 3 11 7 -2
输出样例#1:
11

说明

对于60%的数据:N <= 10,000

对于100%的数据:N <= 200,000

对于所有数据 -1,000 <= A[i] <= 1,000且1 <= L <= R <= N

/*单调队列
对于一个可以蹦到的点,寻找可以向他蹦去的点中最大的一个
就是寻找i-r~i-l中最大的点,可以用单调队列,维护降序排列,保证队列每个点都有可能成为最大的点。
*/
#include<cstdio>
int f[200010],a[200010],b[200010],h,t,n,m,ans,l,r;
int main(){
    freopen("cola.txt","r",stdin);
    scanf("%d%d%d",&n,&l,&r);
    for (int i=0;i<=n;i++) scanf("%d",&a[i]);
    for (int i=0;i<l;i++) f[i]=0;
    h=t=1;
    b[h]=0;
    for (int i=l;i<=n;i++){
        while (b[h]<i-r) h++;
        while (h<=t  && f[b[t]]<=f[i-l]) t--;
        t++;
        b[t]=i-l;
        f[i]=f[b[h]]+a[i];
    }
    ans=f[n-r+1];
    for (int i=n-r+2;i<=n;i++) if (ans<f[i]) ans=f[i];
    printf("%d",ans);
}

 

洛谷p1725琪露诺单调队列优化dp

洛谷P1725琪露诺单调队列优化DP题意:1--n每个点都有一个权值,从当前点i可以到达i+l--i+r之间的点,动态规划方程为f[i]=max(f[i],f[k])+a[i]i-r<=k<=i-l然而这样复杂度就为n^2因为相当于dp是在求一段区间的最大值,而这个最大值就可... 查看详情

p1725琪露诺(代码片段)

题目描述在幻想乡,琪露诺是以笨蛋闻名的冰之妖精。某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来。但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸。于是琪露诺决定到河岸去追青蛙... 查看详情

p1725琪露诺(代码片段)

 复制Markdown  展开题目描述在幻想乡,琪露诺是以笨蛋闻名的冰之妖精。某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来。但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对... 查看详情

[洛谷p3787]冰精冻西瓜

题目描述琪露诺是拥有操纵冷气程度的能力的妖精,一天她发现了一片西瓜地。这里有n个西瓜,由n-1条西瓜蔓连接,形成一个有根树,琪露诺想要把它们冷冻起来慢慢吃。这些西瓜蔓具有神奇的性质,可以将经过它的冷气的寒... 查看详情

冰精冻西瓜[p3787洛谷]

题目描述琪露诺是拥有操纵冷气程度的能力的妖精,一天她发现了一片西瓜地。这里有n个西瓜,由n-1条西瓜蔓连接,形成一个有根树,琪露诺想要把它们冷冻起来慢慢吃。这些西瓜蔓具有神奇的性质,可以将经过它的冷气的寒... 查看详情

琪露诺(代码片段)

题目描述在幻想乡,琪露诺是以笨蛋闻名的冰之妖精。某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来。但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸。于是琪露诺决定到河岸去追青蛙... 查看详情

luogup1725琪露诺

二次联通门: luoguP1725琪露诺   /*luoguP1725琪露诺DP+线段树用线段树维护dp[i-R]~dp[i-L]的最大值然后转移方程是dp[i]=max(dp[i-R],dp[i-R+1],....dp[i-L-1],dp[i-L])+number[i]*/#include<cstdio>#defineMax200009#def 查看详情

luogup1725琪露诺

二次联通门: luoguP1725琪露诺  /*luoguP1725琪露诺DP+线段树用线段树维护dp[i-R]~dp[i-L]的最大值然后转移方程是dp[i]=max(dp[i-R],dp[i-R+1],....dp[i-L-1],dp[i-L])+number[i]具体边界细节自己乱搞一下就好*/#include<cstdio>#defineMax20 查看详情

codevs3943数学奇才琪露诺

二次联通门: codevs3943数学奇才琪露诺    /*codevs3943数学奇才琪露诺一眼看过去感觉这道题是个神题。。。不可做后来打了个暴力,0分再后来仔细想了想既然L,R<=10^9那么数位之和最大就到81(999999999)那么直接枚... 查看详情

琪露诺(代码片段)

传送门啦本人第一个单调队列优化$dp$,不鼓励鼓励?琪露诺这个题,$dp$还是挺好想的对不,但是暴力$dp$的话会$TLE$,所以我们考虑用单调队列优化。原题中说她只移动到区间$[i+L,i+R]$中的任意一格,所以我们单调队列在转移的... 查看详情

luogu1725琪露诺

单调队列#include<iostream>#include<cstdio>usingnamespacestd;intn,l,r,dp[400005],a[200005],q[200005],hea,tai;//dp[i]=max{dp[k]}+w[i]|i-r<=k<=i-lintmain(){cin>>n>>l>>r;fo 查看详情

题解:琪露诺的冰雪小屋luogu3693(代码片段)

庆祝通过noip2018初赛,系列五题EP1.题目描述: https://www.luogu.org/problemnew/show/P3693调试记录: 真的很爽下面是代码:目前写过的最长的代码1#include<bits/stdc++.h>2#define N 21 3#define map ___map4usi 查看详情

dp线段树优化琪露诺(代码片段)

跟去年(2017)PJ第四题几乎是一样的?/吐血DP方程可以很简单的推出来,f[i]=maxf[k]+a[i]然而这样做是O(n^2)的看一下数据,200000的话要不nlogn要不n由于题解里面单调队列和优先队列都有人用了,那就来一发线段树吧(或者实情是:... 查看详情

codevs1697-⑨要写信

原题题目描述 Description琪露诺(冰之妖精)有操控冷气的能力。能瞬间冻结小东西,比普通的妖精更危险。一直在释放冷气的她周围总是非常寒冷。由于以下三点原因……琪露诺的符卡冰符“IcicleFall”-Easy的弹幕有够蠢的,只... 查看详情

[luoguu8984][新创无际夏日公开赛]冰精冻西瓜[树状数组]

题目背景盛夏,冰之妖精琪露诺发现了一大片西瓜地,终于可以吃到美味的冻西瓜啦。题目描述琪露诺是拥有操纵冷气程度的能力的妖精,一天她发现了一片西瓜地。这里有n个西瓜,由n-1条西瓜蔓连接,形成一个有根树,琪露... 查看详情

codevs1697⑨要写信

...限制:128000KB 题目等级:黄金Gold题目描述 Description琪露诺(冰之妖精)有操控冷气的能力。能瞬间冻结小东西,比普通的妖精更危险。一直在释放冷气的她周围总是非常寒冷。由于以下三点原因……琪露诺的符卡冰符“IcicleFal... 查看详情

bzoj41704170:极光(cdq分治)

...sp;512MBSubmit: 121  Solved: 64Description"若是万一琪露诺(俗称rhl)进行攻击,什么都好,冷静地回答她的问题来吸引她。对方表现出兴趣的话,那就慢慢地反问。在她考虑答案的时候,趁机逃吧。就算是很简单的问题,... 查看详情

[sdoi2010]猪国杀

...放在private里好一些。代码开头写了点心路历程应该会写琪露诺的冰雪小屋,那个写完就真该退役了(笑 1前段时间无聊写的23这题OOP确实好写一点45爆写12KB,写代码3h左右,调试2h左右。。。67其实还是有些不足的,有些需要... 查看详情