复习复习DP。。。都忘了QAQ...


好了这道题我其实是看题解才会的。。。

方程 f[i]=min(f[i-j]+v[i]) v[i]表示i是不是石头 s<=j<=t

路径压缩引用一下证明From Luogu@Panda_Hu

#include<cstdio>
#include<iostream>
#define R register int
#include<algorithm>
#define R register int
const int N=,Inf=0x3f3f3f3f;
using namespace std;
int l,t,s,n,mn=Inf,ans=Inf;
int a[N],f[N],d[N],v[N];
inline int g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar()));
do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret;
}
inline int min(int a,int b) {return a<b?a:b;}
signed main() {
l=g(),s=g(),t=g(),n=g();
if(s==t) { R cnt=; for(R i=,x;i<=n;++i) x=g(),cnt+=(x%s==);
printf("%d\n",cnt); return ;
} for(R i=;i<=n;++i) a[i]=g(); sort(a+,a+n+); d[n+]=min(l-a[n],); l=;
for(R i=;i<=n;++i) d[i]=min(a[i]-a[i-],),l+=d[i],v[l]=; l+=d[n+];
for(R i=;i<=l+;++i) { f[i]=Inf;
for(R j=s;j<=t;++j) if(i>=j) f[i]=min(f[i],f[i-j]+v[i]);
} for(R i=l;i<l+;++i) ans=min(ans,f[i]); printf("%d\n",ans);
}

2019.04.28 慌得一批QAQ

Luogu P1052 过河 DP的更多相关文章

  1. P1052 过河[DP]

    题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数 ...

  2. luogu P1052 过河

    传送门 容易想到设\(f_i\)表示走到坐标\(i\)的最少走过的石子数 但是这题数据范围很大,,, 不过一次可以走的步数范围是1-10,石子个数最多100个,所以中间会有很多多出来的没石子的路,可以 ...

  3. P1052 过河(离散化+dp)

    P1052 过河 dp不难,重点是要想到离散化. 石子个数$<=100$意味着有大量空间空置,我们可以缩掉这些空间. 实现的话自己yy下就差不多了. #include<iostream&g ...

  4. 【洛谷】P1052 过河【DP+路径压缩】

    P1052 过河 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙 ...

  5. 洛谷p1052过河 路径压缩+dp

    洛谷 P1052 过河 思路部分可以看这篇博客 我将在这里对其进行一些解释与补充 首先我们先看题 乍一看 这不是模板题吗 然后开开心心的敲了一个简单dp上去 #include<iostream& ...

  6. P1052 过河(状态压缩)

    P1052 过河(状态压缩) 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把 ...

  7. 洛谷P1052 过河

    P1052 过河 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上. 由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青 ...

  8. luogu P6835 概率DP 期望

    luogu P6835 概率DP 期望 洛谷 P6835 原题链接 题意 n + 1个节点,第i个节点都有指向i + 1的一条单向路,现在给他们添加m条边,每条边都从一个节点指向小于等于自己的一个节点 ...

  9. 洛谷P1052 过河【线性dp】【离散化】

    题目:https://www.luogu.org/problemnew/show/P1052 题意: 青蛙要从0跳到超过$l$的地方,每一次可以跳$s$到$t$之间的任意数. 在河中有m个石头,要求在 ...

随机推荐

  1. php 数据导出csv 注意问题。

    总共10W数据每次下载到9.5W就停了. 加上这个就好了 ini_set('memory_limit','512M'): //脚本运行无时间限制. set_time_limit(0); 要设置一个se ...

  2. 【原创】boost::recursive_mutex请小心使用

    recursive_mutex会减少死锁几率?恩看上去的确如此,但是事实上呢?我们从BOOST的官方逻辑去理解: recursive_mutex类可多次进入锁,这样在递归时可以避免一次死锁的几率,这是 ...

  3. 应用Bundle捆绑压缩技术

    从MVC4开始,我们就发现,项目中对Global.asax进行了优化,将原来在MVC3中使用的代码移到了[App_Start]文件夹下,而Global.asax只负责初始化.其中的BundleConf ...

  4. mxnet 线性模型

    mxnet 线性模型 li {list-style-type:decimal;}ol.wiz-list-level2 > li {list-style-type:lower-latin;}ol. ...

  5. SynchronizationContext应用

    这个类的应用,官方的说明并不是很多,主要原因是因为微软又出了一些基于SynchronizationContext的类.比如:BackgroundWorker 大家写程序时经常碰到子线程调用UI线程的方 ...

  6. .netcore2.0 Startup 全局配置文件小技巧

  7. [.net 多线程]volatile 摘录

    一.volatile 介绍 volatile 关键字指示一个字段可以由多个同时执行的线程修改. 声明为 volatile 的字段不受编译器优化(假定由单个线程访问)的限制. 这样可以确保该字段在任何时 ...

  8. 「Luogu 1471」 方差

    题目背景 滚粗了的HansBug在收拾旧数学书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本数学书里面发现了一个神奇的数列,包含N个实数.他想算算这个数列的平均数和方差. 输入输出 ...

  9. 个人JS体系整理(三)

    一. 严格模式 JavaScript 严格模式(strict mode)即在严格的条件下运行.首先声明,严格模式是ES5中提出来的,准确来说就是一句指令Use strict,它的目的是指定代码在严格条 ...

  10. 《javascript 高级程序设计》 笔记1 1~7章

    chapter 2 在html中使用JavaScript chapter 3 基本概念 EMCAscript 语法 变量,函数名和操作符都区分大小写. 使用var定义的变量将成为定义该变量的作用域中的 ...