https://www.vijos.org/p/1002

设dp[i]表示跳到了第i个点,需要的最小的步数。

所以复杂度O(L * T), 不行

注意到T最大是10, 所以dp[i]最多只由10项递推过来。

考虑上面的那个情况,如果两个相邻的石头距离大于10,那么其实是没意义的,比如上面那两个空的10的位置,完全是可以省略的。因为它相当于从那个有石子的那10个转移过来。所以只要两个距离大于10的石子,就可以压缩距离是10即可。

但是这样做的话,有一个大前提,就是你必须保证每个位置都是可达的。否则,比如你只能去到18和19,你就不能把这两个位置压缩成10和11,因为很有可能10和11是不可达的状态,然后你这个石子就永远枚举不了。也破坏了整到题目的题意。

所以只有保证每个状态都是可达的,然后又是空的位置,才能省略。

最差情况是s == t,这个时候特判。

然后就是s + 1 == t,比如9、10的时候,可达的地方是:

0、9、10、18、19、20、27、28、29、30......观察到大于100后,全部状态都是可达的,所以这个时候就可以压缩了。

#include <bits/stdc++.h>
#define IOS ios::sync_with_stdio(false)
using namespace std;
#define inf (0x3f3f3f3f)
typedef long long int LL;
const int maxn = 1e5 + ;
int a[maxn], dp[maxn];
int f[maxn];
void work() {
memset(dp, 0x3f, sizeof dp);
int L, s, t, m;
scanf("%d%d%d%d", &L, &s, &t, &m);
for (int i = ; i <= m; ++i) {
scanf("%d", f + i);
}
sort(f + , f + + m);
int to = ;
for (int i = ; i <= m; ++i) {
if (f[i] - f[i - ] > ) {
to += ;
a[to] = true;
} else {
to += f[i] - f[i - ];
a[to] = true;
}
}
if (s == t) {
int ans = ;
for (int i = ; i <= m; ++i) {
ans += f[i] % s == ;
}
cout << ans << endl;
return;
}
dp[] = ;
for (int i = s; i <= maxn - ; ++i) {
int be = max(, i - t), en = max(, i - s);
for (int j = be; j <= en; ++j) {
dp[i] = min(dp[i], dp[j] + a[i]);
}
}
int ans = inf;
for (int i = maxn - ; i <= maxn - ; ++i) {
ans = min(ans, dp[i]);
}
cout << ans << endl;
} int main() {
#ifdef local
freopen("data.txt", "r", stdin);
// freopen("data.txt", "w", stdout);
#endif
work();
return ;
}

Vijos 1002 过河 dp + 思维的更多相关文章

  1. Vijos 1002 过河 状态压缩DP

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

  2. Vijos 1002 过河

    这是我写的在Vijos上的第一题.这道题在我刚学完DP的时候,就做过.当时年少轻狂,没有看数据的范围,直接暴力DP,结果TLE....后来就没有再碰过.知道最近觉得快要省赛了,有必要把原来没有做出来的 ...

  3. Vijos p1002 过河 离散化距离+区间DP

    链接:https://vijos.org/p/1002 题意:一条长度为L(L <= 1e9)的桥上有N(1<= N <= 100)颗石头.桥的起点为0终点为L.一只青蛙从0开始跳, ...

  4. vijos 1002 简单压缩+DP

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

  5. Vijos P1002 过河 (NOIP提高组2005)

    链接:https://www.vijos.org/p/1002 解析: 若 p*x+(p+1)*y=Q(採用跳跃距离p和p+1时能够跳至不论什么位置Q),则在Q ≥ P*(P-1)时是一定有解的. 因 ...

  6. 袋鼠过河---DP

    题目:一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远,每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为5, ...

  7. NOIP2005过河[DP 状态压缩]

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

  8. ooj 1066 青蛙过河DP

    http://121.249.217.157/JudgeOnline/problem.php?id=1066 1066: 青蛙过河 时间限制: 1 Sec  内存限制: 64 MB提交: 58  解决 ...

  9. Vijos 1100 (区间DP)

    题目链接: https://vijos.org/p/1100 题目大意:NOIP著名的加分二叉树.给出一棵树的中序遍历,加分规则左子树*右子树+根.空子树分数为1.问最大加分的树结构,输出树结构的先序 ...

随机推荐

  1. mysql之count

    两种引擎对count的处理 CREATE TABLE `test` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` char(15) D ...

  2. linux进程学习笔记

    学习了linux下的进程,觉得应该整理一下,忘得差不多了,顺便回顾一下. 学而时习之,不亦说乎~~ 进程笔记 ,什么是进程? The Single UNIX Specification, Versio ...

  3. ISO文件怎么安装

    iso是光盘映像文件,打开iso文件有几种方法:1.使用光盘映像工具软件或者虚拟光驱才能打开iso文件.像软碟通(UItraISO)就是一个很好的光盘映像工具软件,使用它就可以打开iso文件,提取里面 ...

  4. 「USACO15FEB」「LuoguP3121」审查(黄金)Censoring (Gold)(AC自动机

    题目描述 Farmer John has purchased a subscription to Good Hooveskeeping magazine for his cows, so they h ...

  5. ACM学习历程—HDU1716 排列2(dfs && set容器)

    Description Ray又对数字的列产生了兴趣: 现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数.   Input 每组数据占一行,代表四张卡片上的数字( ...

  6. 洛谷 P1496 火烧赤壁

    题目描述 曹操平定北方以后,公元208年,率领大军南下,进攻刘表.他的人马还没有到荆州,刘表已经病死.他的儿子刘琮听到曹军声势浩大,吓破了胆,先派人求降了. 孙权任命周瑜为都督,拨给他三万水军,叫他同 ...

  7. JVM(一)虚拟机内存划分

    Java内存区域 线程私有数据区域:虚拟机栈,本地方法栈,程序计数器 线程共享数据区域:方法区,堆 程序计数器:当前线程所执行的字节码的行号指示器,JVM通过这个字节码解释器改变计数器的值,以选择下一 ...

  8. 数据库小记:根据指定名称查询数据库表名及根据指定名称查询数据库所有表中的字段名称(支持mysql/postgre)

    意:本篇文章仅适用于mysql和postgre这两种数据库 1.查询数据库中所有表名及对应表的详细信息 select * from INFORMATION_SCHEMA.tables 2.根据指定名称 ...

  9. WPF Get Multibinding Expression, Update Source,

    wpf 拿到某个control的multibinding以及其中每个Binding 1. 拿到multibinding      MultiBindingExpression mbe = Bindin ...

  10. 2013-2014回首&展望

    2013年,可以说是此前18年中,最重要最感触的一年了. 和老婆相爱,考高考,入大学等等事情全都在这美妙的一年里发生了. 2013: 开心:·和老婆相爱,共同经历了大大小小的风雨·每天都有期待的东西· ...