1105 过河

2005年NOIP全国联赛提高组

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 钻石 Diamond

 
 

 
题目描述 Description

在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,……,L(其中L是桥的长度)。坐标为0的点表示桥的起点,坐标为L的点表示桥的终点。青蛙从桥的起点开始,不停的向终点方向跳跃。一次跳跃的距离是S到T之间的任意正整数(包括S,T)。当青蛙跳到或跳过坐标为L的点时,就算青蛙已经跳出了独木桥。
题目给出独木桥的长度L,青蛙跳跃的距离范围S,T,桥上石子的位置。你的任务是确定青蛙要想过河,最少需要踩到的石子数。

输入描述 Input Description

输入第一行有一个正整数L(1<=L<=109),表示独木桥的长度。第二行有三个正整数S,T,M,分别表示青蛙一次跳跃的最小距离,最大距离,及桥上石子的个数,其中1<=S<=T<=10,1<=M<=100。第三行有M个不同的正整数分别表示这M个石子在数轴上的位置(数据保证桥的起点和终点处没有石子)。所有相邻的整数之间用一个空格隔开。

输出描述 Output Description

输出只包括一个整数,表示青蛙过河最少需要踩到的石子数。

样例输入 Sample Input

10
2 3 5
2 3 5 6 7

样例输出 Sample Output

2

数据范围及提示 Data Size & Hint

数据规模

对于30%的数据,L<=10000;

对于全部的数据,L<=109。

#include<iostream>
#include<cstdio>
#include<cstring>#define N 1000007
#define inf 0x3f3f3f3fusing namespace std;
int f[N],a[N],flag[N];
int s,t,n,m,ans,cnt;int main()
{scanf("%d%d%d%d",&n,&s,&t,&m);for(int i=1;i<=m;i++) scanf("%d",&a[i]),flag[a[i]]=1;memset(f,127/3,sizeof f);f[0]=flag[0];for(int i=0;i<=n;i++)for(int j=s;j<=t;j++)if(flag[i]) f[i]=min(f[i],f[max(i-j,0)]+1);else f[i]=min(f[i],f[max(i-j,0)]);ans=inf;for(int i=n-t;i<=n;i++) ans=min(ans,f[i]);printf("%d\n",ans);return 0;
} 

坏掉,30暴力

/*
桥距离很长,但石子很少
考虑在不影响答案的情况下缩减石头间的距离
就是不改变相对位置
可以对(1~10)的最小公倍数取模,因为青蛙跳的长度在1~10间。
试了几次下界就出来了,跑得飞快。
*/
#include<cstdio>
#include<algorithm>
#include<cstring>#define N 110using namespace std;
int L,S,T,M;
int a[N],b[N*N*10],f[N*N*10];int main()
{scanf("%d%d%d%d",&L,&S,&T,&M);for (int i=1; i<=M; i++) scanf("%d",&a[i]);sort(a+1,a+M+1);if (S==T){int ans=0;for (int i=1; i<=M; i++)if (a[i]%S==0)ans++;printf("%d",ans);return 0;}int last=0;for (int i=1; i<=M; i++){int tmp=a[i];if (a[i]-last>=90)a[i]=a[i-1]+90;else a[i]=a[i-1]+a[i]-last;last=tmp;b[a[i]]=1;}memset(f,0x3f,sizeof(f));f[0]=0;for (int i=S;i<=a[M]+T;i++)for (int j=i-T;j<=i-S;j++)if (j>=0)f[i]=min(f[i],f[j]+b[i]);int ans=0x3f3f3f3f;for (int i=a[M];i<=a[M]+T; i++)ans=min(ans,f[i]);printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/L-Memory/p/7678673.html

过河 2005年NOIP全国联赛提高组(离散化+dp)相关推荐

  1. 1099 字串变换 2002年NOIP全国联赛提高组

    1099 字串变换 2002年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解 题目描述 Description 已知有两个字串 A ...

  2. 聪明的质监员 2011年NOIP全国联赛提高组(二分+前缀和)

    聪明的质监员 2011年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold   题目描述 Description 小 T 是一名质量监督员, ...

  3. Codevs 1066 引水入城 2010年NOIP全国联赛提高组

    1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 在一个遥远的国度 ...

  4. 【codevs 1315】1315 摆花2012年NOIP全国联赛普及组(dp)

    1315 摆花2012年NOIP全国联赛普及组  时间限制: 1 s   空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description     小明的花店新开张,为 ...

  5. 棋盘型动态规划 之 CODE[VS] 1169 传纸条 2008年NOIP全国联赛提高组

    /* 这道题要解决两个问题1)状态和状态方程2)怎么保证每走一步,所形成的路径不相交,以保证最后生成的完整路径不相交.(1)状态: dp[i][j][k][l] = 小渊传递的纸条到[i][j]的位置 ...

  6. codevs 1043 方格取数 2000年NOIP全国联赛提高组

    时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description 设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而 ...

  7. CODE[VS] 1098 均分纸牌 ( 2002年NOIP全国联赛提高组)

    arr[i] :表示每个牌堆的纸牌的数目 平均值 :当纸牌数都一样多时,纸牌的数目从左向右考虑,每堆纸牌有三种状态: 1) arr[i] == 平均值,考虑arr[i+1] 2) arr[i] < ...

  8. Codevs 1066 引水入城 2010年NOIP全国联赛提高组 BFS + 贪心

    Codevs 1066 引水入城 题目上没有给出样例二,只给出了样例二的图,真是奇怪(丧心病狂). Input2: 3 6 8 4 5 6 4 4 7 3 4 3 3 3 3 2 2 1 1 2 Ou ...

  9. 1038 一元三次方程求解 2001年NOIP全国联赛提高组

    题目描述 Description 有形如:ax3+bx2+cx+d=0  这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d  均为实数),并约定该方程存在三个不同实根(根的范围在-100 ...

最新文章

  1. 人工智能三大驱动力背后的CMOS传感器
  2. Windows PE 第十章 加载配置信息
  3. 【Java注解】自定义注解、与数据库结合使用
  4. Win7/8出现An error occurred on the server when processing the URL解决办法
  5. android里canvas视频帧,移动端用canvas截取视频封面,如何不截取第一帧,而是截取其它的帧?...
  6. yang模型中rpc_领域驱动模型(DDD)设计讲解
  7. office2010出现“此错误通常是由宏安全性设置造成的”的解决办法
  8. 2.4 在不同的划分上进行训练并测试
  9. 设置Panel的布局管理器为BorderLayout,分别向其中的每个区域加入一个按钮
  10. android java静态库,Android NDK开发相关知识集合
  11. (转)kafka 详解
  12. 三菱gxworks3安装失败_三菱GX软件安装出错处理大全
  13. C与指针——指针(一)
  14. 计算机无法检测电池损耗怎么办,笔记本电脑电池损耗怎么修复 笔记本电脑电池损耗修复方法...
  15. 如何优化程序员的内部培训
  16. 博图可以用c语言编程吗,S7300能用C语言编程吗?
  17. 通过身份证号码提取年龄,性别
  18. 考研二战日记-第11天——高数2.1 导数概念
  19. 深入理解机器学习——类别不平衡学习(Imbalanced Learning):常用技术概览
  20. 基于java的奖学金评定系统设计与实现

热门文章

  1. 日常办公会用到的python模块-Python如何去实际提高工作的效率?也许这个会有用!...
  2. python人脸识别毕业设计-Python 40行代码实现人脸识别功能
  3. python画图代码turtle-Python使用Turtle图形函数画图 颜色填充!
  4. python turtle库画图案-Python基础图形绘制库——turtle
  5. 如何系统的自学python 知乎-如何系统地自学Python?
  6. 学python找工作有用吗-为什么我不建议你通过 Python 去找工作?
  7. 廖雪峰python教程pdf-爬虫:把廖雪峰的教程转换成 PDF 电子书
  8. python爬虫入门实例-Python爬虫天气预报实例详解(小白入门)
  9. python免费入门教程-python入门免费教程看这些就够了
  10. 看漫画学python电子书-看漫画还能学Python❓❓❓| 0基础小白福音