https://www.luogu.org/problem/show?pid=1725

题目描述

在幻想乡,琪露诺是以笨蛋闻名的冰之妖精。某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来。但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸。于是琪露诺决定到河岸去追青蛙。小河可以看作一列格子依次编号为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

设f[i]表示到达i点可获得的最大冰冻指数

则f[i]=max(f[j]+a[i],(i-r<=j<=i-l)

 #include <cstdio>

 #define max(a,b) (a>b?a:b)
inline void read(int &x)
{
x=; register bool __=; register char ch=getchar();
for(; ch>''||ch<''; ch=getchar()) if(ch=='-') __=;
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
x=__?((~x)+):x;
}
const int N();
int n,l,r,a[N],f[N],ans; int Presist()
{
read(n),read(l),read(r);
for(int i=; i<=n; ++i ) read(a[i]);
for(int i=; i<l; ++i) f[i]=;
for(int i=l; i<=n+r; ++i)
{
for(int j=max(,i-r); j<=i-l; ++j)
f[i]=max(f[i],f[j]+a[i]);
}
for(int i=n; i<=n+r; ++i) ans=max(ans,f[i]);
printf("%d\n",ans);
return ;
} int Aptal=Presist();
int main(int argc,char*argv[]){;}

60分

单调队列优化(数组要开大点,不然莫名WA)

 #include <cstdio>

 #define max(a,b) (a>b?a:b)
inline void read(int &x)
{
x=; register bool __=; register char ch=getchar();
for(; ch>''||ch<''; ch=getchar()) if(ch=='-') __=;
for(; ch>=''&&ch<=''; ch=getchar()) x=x*+ch-'';
x=__?((~x)+):x;
}
const int N();
int n,l,r,a[N],f[N];
int que[N<<],head=,tail,ans; int Presist()
{
read(n),read(l),read(r);
for(int i=; i<=n; ++i ) read(a[i]);
que[++tail]=;
for(int i=l; i<=n+r; ++i)
{
for(; head<=tail&&f[i-l]>=f[que[tail]]; ) tail--;
que[++tail]=i-l;
for(; head<=tail&&que[head]<i-r; ) head++;
f[i]=f[que[head]]+a[i];
}
for(int i=n; i<=n+r; ++i) ans=max(ans,f[i]);
printf("%d\n",ans);
return ;
} int Aptal=Presist();
int main(int argc,char*argv[]){;}

洛谷—— P1725 琪露诺的更多相关文章

  1. 洛谷P1725琪露诺(单调队列优化dp)

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

  2. 洛谷 P1725 琪露诺 题解

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

  3. 洛谷P1725 琪露诺

    传送门啦 本人第一个单调队列优化 $ dp $,不鼓励鼓励? 琪露诺这个题,$ dp $ 还是挺好想的对不,但是暴力 $ dp $ 的话会 $ TLE $ ,所以我们考虑用单调队列优化. 原题中说她只 ...

  4. 洛谷P1725 琪露诺 (单调队列/堆优化DP)

    显然的DP题..... 对于位置i,它由i-r~i-l的位置转移过来,容易得到方程 dp[i]=dp[i]+max(dp[i−r],...,dp[i−l]). 第一种:n2的暴力,只能拿部分分. 1 ...

  5. [洛谷P3693]琪露诺的冰雪小屋

    题目大意:琪露诺的冰雪小屋,我做的第一道大模拟题. 题解:模拟... 卡点:无数小错误,要是没有写一点调一点,那大概是永远调不出来了... C++ Code: #include <cstdio& ...

  6. 【洛谷】【动态规划+单调队列】P1725 琪露诺

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

  7. P1725 琪露诺

    P1725 琪露诺 单调队列优化dp 对于不是常数转移的dp转移,我们都可以考虑单调队列转移 然而我们要把数组开大 #include<cstdio> #include<algorit ...

  8. luogu P1725 琪露诺

    二次联通门 : luogu P1725 琪露诺 /* luogu P1725 琪露诺 DP + 线段树 用线段树维护dp[i - R] ~ dp[i - L]的最大值 然后 转移方程是 dp[i] = ...

  9. P1725 琪露诺(单调队列优化)

    描述:https://www.luogu.com.cn/problem/P1725 小河可以看作一列格子依次编号为0到N,琪露诺只能从编号小的格子移动到编号大的格子.而且琪露诺按照一种特殊的方式进行移 ...

随机推荐

  1. 洛谷 P1074 靶形数独(剪枝)

    //人生中第一道蓝题(3.5h) 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请 ...

  2. N - Binomial Showdown (组合数学)

    Description In how many ways can you choose k elements out of n elements, not taking order into acco ...

  3. Using 10053 Trace Events and get outline

    When it comes to performance tuning, we can spend time on one or both ends of the problem. On the &q ...

  4. SpringBoot-redis-session

    配置pom <parent> <groupId>org.springframework.boot</groupId> <artifactId>sprin ...

  5. python2 'str' object has no attribute 'decode'

    '.decode('hex') 上述代码,报错: 'str' object has no attribute 'decode' 查找原因: https://stackoverflow.com/ques ...

  6. Spring.Net学习笔记(4)-属性及构造器注入

    一.开发环境 操作系统:Win10 编译器:VS2013 .Net版本:.net framework4.5 二.涉及程序集 Spring.Core.dll:1.3.1 Common.Logging.d ...

  7. leetcode516 Longest Palindromic Subsequence

    思路: 区间dp. 实现: class Solution { public: int longestPalindromeSubseq(string s) { int n = s.length(); ] ...

  8. 读《实战GUI自动化测试》之:第三步,如何提高测试结果分析的效率

    转自:http://www.ibm.com/developerworks/cn/rational/r-cn-guiautotesting3/ 所谓自动化测试,就是“自动化”+“测试”.自动化本身显然不 ...

  9. 最容易理解的HMM文章

    wiki上一个比较好的HMM例子 分类 隐马尔科夫模型 HMM(隐马尔科夫模型)是自然语言处理中的一个基本模型,用途比较广泛,如汉语分词.词性标注及语音识别等,在NLP中占有很重要的地位.网上关于HM ...

  10. CAD利用Select2得到所有实体(网页版)

    主要用到函数说明: IMxDrawSelectionSet::Select2 构造选择集.详细说明如下: 参数 说明 [in] MCAD_McSelect Mode 构造选择集方式 [in] VARI ...