过河 2005年NOIP全国联赛提高组(离散化+dp)
1105 过河
2005年NOIP全国联赛提高组
在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,……,L(其中L是桥的长度)。坐标为0的点表示桥的起点,坐标为L的点表示桥的终点。青蛙从桥的起点开始,不停的向终点方向跳跃。一次跳跃的距离是S到T之间的任意正整数(包括S,T)。当青蛙跳到或跳过坐标为L的点时,就算青蛙已经跳出了独木桥。
题目给出独木桥的长度L,青蛙跳跃的距离范围S,T,桥上石子的位置。你的任务是确定青蛙要想过河,最少需要踩到的石子数。
输入第一行有一个正整数L(1<=L<=109),表示独木桥的长度。第二行有三个正整数S,T,M,分别表示青蛙一次跳跃的最小距离,最大距离,及桥上石子的个数,其中1<=S<=T<=10,1<=M<=100。第三行有M个不同的正整数分别表示这M个石子在数轴上的位置(数据保证桥的起点和终点处没有石子)。所有相邻的整数之间用一个空格隔开。
输出只包括一个整数,表示青蛙过河最少需要踩到的石子数。
10
2 3 5
2 3 5 6 7
2
数据规模
对于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)相关推荐
- 1099 字串变换 2002年NOIP全国联赛提高组
1099 字串变换 2002年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 已知有两个字串 A ...
- 聪明的质监员 2011年NOIP全国联赛提高组(二分+前缀和)
聪明的质监员 2011年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小 T 是一名质量监督员, ...
- Codevs 1066 引水入城 2010年NOIP全国联赛提高组
1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 在一个遥远的国度 ...
- 【codevs 1315】1315 摆花2012年NOIP全国联赛普及组(dp)
1315 摆花2012年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小明的花店新开张,为 ...
- 棋盘型动态规划 之 CODE[VS] 1169 传纸条 2008年NOIP全国联赛提高组
/* 这道题要解决两个问题1)状态和状态方程2)怎么保证每走一步,所形成的路径不相交,以保证最后生成的完整路径不相交.(1)状态: dp[i][j][k][l] = 小渊传递的纸条到[i][j]的位置 ...
- codevs 1043 方格取数 2000年NOIP全国联赛提高组
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而 ...
- CODE[VS] 1098 均分纸牌 ( 2002年NOIP全国联赛提高组)
arr[i] :表示每个牌堆的纸牌的数目 平均值 :当纸牌数都一样多时,纸牌的数目从左向右考虑,每堆纸牌有三种状态: 1) arr[i] == 平均值,考虑arr[i+1] 2) arr[i] < ...
- 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 ...
- 1038 一元三次方程求解 2001年NOIP全国联赛提高组
题目描述 Description 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100 ...
最新文章
- 人工智能三大驱动力背后的CMOS传感器
- Windows PE 第十章 加载配置信息
- 【Java注解】自定义注解、与数据库结合使用
- Win7/8出现An error occurred on the server when processing the URL解决办法
- android里canvas视频帧,移动端用canvas截取视频封面,如何不截取第一帧,而是截取其它的帧?...
- yang模型中rpc_领域驱动模型(DDD)设计讲解
- office2010出现“此错误通常是由宏安全性设置造成的”的解决办法
- 2.4 在不同的划分上进行训练并测试
- 设置Panel的布局管理器为BorderLayout,分别向其中的每个区域加入一个按钮
- android java静态库,Android NDK开发相关知识集合
- (转)kafka 详解
- 三菱gxworks3安装失败_三菱GX软件安装出错处理大全
- C与指针——指针(一)
- 计算机无法检测电池损耗怎么办,笔记本电脑电池损耗怎么修复 笔记本电脑电池损耗修复方法...
- 如何优化程序员的内部培训
- 博图可以用c语言编程吗,S7300能用C语言编程吗?
- 通过身份证号码提取年龄,性别
- 考研二战日记-第11天——高数2.1 导数概念
- 深入理解机器学习——类别不平衡学习(Imbalanced Learning):常用技术概览
- 基于java的奖学金评定系统设计与实现
热门文章
- 日常办公会用到的python模块-Python如何去实际提高工作的效率?也许这个会有用!...
- python人脸识别毕业设计-Python 40行代码实现人脸识别功能
- python画图代码turtle-Python使用Turtle图形函数画图 颜色填充!
- python turtle库画图案-Python基础图形绘制库——turtle
- 如何系统的自学python 知乎-如何系统地自学Python?
- 学python找工作有用吗-为什么我不建议你通过 Python 去找工作?
- 廖雪峰python教程pdf-爬虫:把廖雪峰的教程转换成 PDF 电子书
- python爬虫入门实例-Python爬虫天气预报实例详解(小白入门)
- python免费入门教程-python入门免费教程看这些就够了
- 看漫画学python电子书-看漫画还能学Python❓❓❓| 0基础小白福音