Description

给定一条数轴,起点为0,数轴的某些整数点上有石子。每次可以移动的区间为[S,T]。求当到达或超过L时,最少踩到的石子数。

Input

输入的第一行有一个正整数L(1 <= L <= 109)。

第二行有三个正整数S,T,M,M表示桥上石子的个数,其中1 <= S <= T <= 10,1 <= M <= 100。

第三行有M个不同的正整数分别表示这M个石子在数轴上的位置(数据保证桥的0和L处没有石子)。所有相邻的整数之间用一个空格隔开。

Output

输出只包括一个整数,表示最少踩到的石子数。

Sample Input

10

2 3 5

2 3 5 6 7

Sample Output

2

Solution

首先列出dp方程,f[i]表示到达i时最少踩到的石子数,则f[i]=min(f[i-k])(S<=k<=T)。

然后发现数据范围是109,所以需要状压一下。

经过思考可以发现,如果在k+S×T和k+S×T+x(k>=0,x>0)处有石子,则若存在一种方案可以越过k+S×T,那么也能越过k+S×T+x。

具体证明时把S×T看成T个S相加,易证能到达k+S×T,也能到达k+S×T+x。

所以只需将距离超过S×T的石子距离缩到S×T就可以了。

 #include<cmath>
#include<ctime>
#include<queue>
#include<stack>
#include<cstdio>
#include<vector>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define M 101
#define L 20001
using namespace std;
int a[M],f[L],l,m,s,t;
bool sto[L];
inline void init(){
scanf("%d%d%d%d",&l,&s,&t,&m);
for(int i=;i<=m;i++)
scanf("%d",&a[i]);
sort(a+,a++m);
if(s==t){
for(int i=;i<=m;i++)
if(!(a[i]%s)&&a[i]<=l)
f[]++;
printf("%d\n",f[]);
return;
}
for(int i=,d;i<=m;i++){
if(a[i]-a[i-]>s*t){
d=a[i]-a[i-]-s*t;
for(int j=i;j<=m;j++)
a[j]-=d;
}
sto[a[i]]=true;
}
if(l-a[m]>s*t) l=a[m]+s*t;
fill(f+,f++l,M);
for(int i=s;i<=l;i++){
f[i]=f[i-s];
for(int j=min(t,i);j>=s;j--)
f[i]=min(f[i],f[i-j]);
f[i]+=sto[i];
}
printf("%d\n",f[l]);
}
int main(){
freopen("river.in","r",stdin);
freopen("river.out","w",stdout);
init();
fclose(stdin);
fclose(stdout);
return ;
}

[vijos1002][NOIP2005]过河的更多相关文章

  1. [codevs1105][COJ0183][NOIP2005]过河

    [codevs1105][COJ0183][NOIP2005]过河 试题描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青 ...

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

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

  3. NOIP2005 过河

    过河 (river.pas/c/cpp) [问题描述] 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正 ...

  4. [NOIP2005] 过河【Dp,思维题,缩点】

    Online Judge:Luogu P1052 Label:Dp,思维题,缩点,数学 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子 ...

  5. NOIP2005过河(青蛙过河)

    题目传送门 这道题主要是因为L长度最大可以为1e9 而石子却最多只有100个 这样就浪费了很多时间空间 所以我们压缩一波路径就可以了 剩余的就是枚举每个点以及i-y到i-x的dp了 这里要说一句为什么 ...

  6. NOIp2005 过河【dp+离散化】By cellur925

    题目传送门 $30pts$ 状态和转移都比较好想:设$f[i]$表示跳到$i$位置,踩到的最小石子数.转移方程也很明了,为$f[i]$=$min${$f[i-j]$),,这个位置有石子时答案再加1,$ ...

  7. [题解+总结]NOIP动态规划大合集

    1.前言 NOIP2003-2014动态规划题目大合集,有简单的也有难的(对于我这种动态规划盲当然存在难的),今天就把这些东西归纳一下,做一个比较全面的总结,方便对动态规划有一个更深的理解. 2.NO ...

  8. 【游记】NOIP 2017

    时间:2017.11.11~2017.11.12 地点:广东省广州市第六中学 Day1 T1:看到题目,心想这种题目也能放在T1? 这个结论我之前遇到过至少3次,自己也简单证明过.初见是NOIP200 ...

  9. OI 刷题记录——每周更新

    每周日更新 2016.05.29 UVa中国麻将(Chinese Mahjong,Uva 11210) UVa新汉诺塔问题(A Different Task,Uva 10795) NOIP2012同余 ...

随机推荐

  1. 04传智_jbpm与OA项目_部门模块改进_直接在BaseAction中实现ModelDriven<T>

    这个项目是用Struts2做的,我这里单独写了一个BaseAction,用来存放所有的功能模块的Action的公共部分, 刚开始的做法是这个BaseAction只会继承ActionSupport 并不 ...

  2. Python快速教程目录(转)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 怎么能快速地掌握Python?这是和朋友闲聊时谈起的问题. Python包含的内容 ...

  3. React Native开发技术周报2

    (1).资讯 1.React Native 0.22_rc版本发布 添加了热自动重载功能 (2).技术文章 1.用 React Native 设计的第一个 iOS 应用 我们想为用户设计一款移动端的应 ...

  4. ${pageContext.request.contextPath}无效

    发现在Tomcat7.0.58,在jsp页面使用${pageContext.request.contextPath}获取不到项目名称,网上找了很多答案试了都无效: 把Tomcat版本换成Tomcat7 ...

  5. 如何重现难以重现的bug

    生活中有这么一种现象:如果你关注某些东西,它就会经常出现在你眼前,例如一个不出名的歌手的名字,一种动物的卡通形象,某个非常专业的术语,等等等等.这种现象也叫做“孕妇效应”.还有类似的一种效应叫做“视网 ...

  6. 奇怪的Js时间计算方法,跨多个月后出现1天的误差

    在项目中要求用计算两个时间相差的天数,通俗的说就是两个时间 相减, 我的方法 先把两个时间转成相应的毫秒,相减后,再除以(1000 * 60 * 60 * 24) 就可以得到对应天数,但天数会比实际少 ...

  7. [CF#290 Div.1 C]Fox And Dinner(最大流)

    题目:http://codeforces.com/contest/512/problem/C 题目大意:给你若干个数,让你分成k组,每组围成一个圆,使得相邻两个数和均为素数,且每组人数应>=3个 ...

  8. ASP.NET 页面缓存

    ASP.NET 实现页面缓存页面缓存的使用方法非常的简单,只需要在aspx页的顶部加一句声明<%@ OutputCache Duration="60" VaryByParam ...

  9. JS 问题集锦

    [1]js页面跳转 和 js打开新窗口方法 第一种: <script language="javascript" type="text/javascript&quo ...

  10. Competition-based User Expertise Score Estimation-20160520

    1.Information publication:sigir 2011 author:Jing Liu Harbin Institute of TechnologyMicrosoft Researc ...