[codevs1105][COJ0183][NOIP2005]过河

[codevs1105][COJ0183][NOIP2005]过河

试题描述

在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点: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

题解

L 比较小时,可以直接 dp:设 f(i) 表示到达位置 i 时最少踩过的石子数目。正解与它做法一样,只是发现许多节点是不需要考虑的,所以我们可以忽略它们。暴力找一下 S, T 分别取 1~10 时的最大不可表数,发现只有 71,那么当相邻两个石子间距离超过 71 时,我们就可以将这个距离变成它对 71 取模再加上 2 倍的 71,最后暴力 dp 一下就好了。注意判断 S = T 的情况。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cctype>
#include <algorithm>
using namespace std;int read() {int x = 0, f = 1; char c = getchar();while(!isdigit(c)){ if(c == '-') f = -1; c = getchar(); }while(isdigit(c)){ x = x * 10 + c - '0'; c = getchar(); }return x * f;
}#define maxn 27280
int L, S, T, n, A[maxn], f[maxn];
bool has[maxn];void up(int& a, int b) {if(a < 0) a = b;else a = min(a, b);return ;
}int main() {L = read(); S = read(); T = read(); n = read();for(int i = 1; i <= n; i++) A[i] = read();sort(A + 1, A + n + 1);if(S == T) {int cnt = 0;for(int i = 1; i <= n; i++) if(A[i] % S == 0) cnt++;return printf("%d\n", cnt), 0;}int p = 0;for(int i = 1; i <= n; i++)if(A[i] - A[i-1] <= 71) p += A[i] - A[i-1], has[p] = 1;else p += (A[i] - A[i-1]) % 71 + 142, has[p] = 1;memset(f, -1, sizeof(f));f[0] = 0;for(int i = 0; i <= p + 1; i++) if(f[i] >= 0)for(int j = S; j <= T; j++) {int tmp = (i + j <= p + 1) ? i + j : p + 1;up(f[tmp], f[i] + has[tmp]);}printf("%d\n", f[p+1]);return 0;
}

 

转载于:https://www.cnblogs.com/xiao-ju-ruo-xjr/p/6165697.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255757.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ABB机器人套接口通信 机器人部分

ABB机器人套接口通信 机器人部分 文章机器人部分&#xff0c;描述如何运行机器人从机程序&#xff0c;使机器人根据上位机节点发送的命令&#xff0c;执行具体运动。 ABB机器人执行3个任务。这些任务都配置为SEMISTATIC(背景程序)的任务,第三任务是正常动作任务。下文描述如…

CRM项目总结

CRM项目总结 一&#xff1a;开发背景 在公司日益扩大的过程中&#xff0c;不可避免的会伴随着更多问题出现。 对外 &#xff1a; 如何更好的管理客户与公司的关系&#xff1f;如何更及时的了解客户日益发展的需求变化&#xff1f;公司的产品是否真的符合客户需求&#xff1f;以…

【面经——《速腾聚创科技有限公司——深度学习算法工程师》】

自我介绍 实习项目 1&#xff09;项目主要应用的领域&#xff1f; 2&#xff09;难点在哪&#xff1f;——机械臂吸盘大小和目标大小之间坐标的协调 3&#xff09;难点不在于算法&#xff0c;在于数据的处理和均衡性&#xff1f;对于数据均衡方面有什么理解&#xf…

js变量和数据类型

转载于:https://www.cnblogs.com/songyinan/p/6181421.html

offline .net3.5

1.加载虚拟光驱 2.dism.exe /online /enable-feature /featurename:netfx3 /Source:D:\sources\sxs转载于:https://www.cnblogs.com/BillLei/p/5294082.html

(九)模板方法模式详解(包含与类加载器不得不说的故事)

作者&#xff1a;zuoxiaolong8810&#xff08;左潇龙&#xff09;&#xff0c;转载请注明出处&#xff0c;特别说明&#xff1a;本博文来自博主原博客&#xff0c;为保证新博客中博文的完整性&#xff0c;特复制到此留存&#xff0c;如需转载请注明新博客地址即可。 模板方法模…

阿里云openapi接口使用,PHP,视频直播

1.下载sdk放入项目文件夹中 核心就是aliyun-php-sdk-core&#xff0c;它的配置文件会自动加载相应的类 2.引入文件 include_once LIB_PATH . ORG/aliyun-openapi/aliyun-php-sdk-core/Config.php; 3.配置客户端对象,需要Access Key ID,Access Key Secret $iClientProfile Defa…

【面经——《广州敏视数码科技有限公司》——图像处理算法工程师-深度学习方向】

目录 笔试 HR面 专业面——60多分钟 主管面 反问&#xff1a; 笔试 8道题——简答题 1道编程 苹果、香蕉、梨、菠萝&#xff0c;彩色图像如何进行分类&#xff1f;一辆带车牌的汽车&#xff0c;图像亮度整体呈现偏亮状态&#xff0c;如何…

Android之网络编程利用PHP操作MySql插入数据(四)

因为最近在更新我的项目&#xff0c;就想着把自己在项目中用到的一些的简单的与网络交互的方法总结一下&#xff0c;所以最近Android网络编程方面的博文会比较多一些&#xff0c;我尽量以最简单的方法给大家分享&#xff0c;让大家明白易懂。如果有什么不对的地方&#xff0c;还…

RAPID 信号的互锁和同步 WaitTestAndSet 和 TestAndSet

RAPID 信号的互锁和同步 WaitTestAndSet 指令等待指定的持久型 BOOL 变量变成 FALSE.当变量值变为 FALSE, 该指令将设置变量为 TRUE 并继续执行. 该持久型变量可被作为同步或者互斥时的一个 BOOL 信号量。 这个指令与 TestAndSet 有着同样的基本功能。但是 WaitTestAnd…

【常用网址】——opencv等

opencv官网Releases - OpenCVhttps://opencv.org/releases/

(五):C++分布式实时应用框架——微服务架构的演进

C分布式实时应用框架——微服务架构的演进 技术交流合作QQ群&#xff1a;436466587 欢迎讨论交流 上一篇&#xff1a;(四)&#xff1a;C分布式实时应用框架——状态中心模块 版权声明:本文版权及所用技术归属smartguys团队所有&#xff0c;对于抄袭&#xff0c;非经同意转载等…

如何通过软件项目开发来提高自身的实力。

在我们这个专业&#xff0c;大多数人都不会将软件开发当作自己的事业&#xff0c;因为若要在这个行业上能够立足&#xff0c;得需要一个好的基础&#xff0c;但是由于这个东西并不是可以通过书本能够彻底的理解和 掌握的&#xff0c;随着时间的变化&#xff0c;我们身边的科技也…

梦回JavaScript--数据类型之undefined

undefined类型只有一个值&#xff0c;即undefined。在使用var声明变量但未对其加以初始化时&#xff0c;这个变量的值就是undefined&#xff1b; var mes; alert(mes undefined) //true如果变量没有声明就会出现错误 var mes; alert(mes) //undefined alert(a)//error 然而有一…

Robot Application Builder

软件开发工具包 Robot Application Builder是安装在PC机&#xff08;Windows 2000或Windows XP操作系统&#xff09;上的一种独立开发工具&#xff0c;可用于创建运行于ABB FlexPendant示教器或PC机上的定制化操作界面。为此&#xff0c;该软件包由以下两部分组成&#xff1a;…

asp.net model 验证和取出 ErrorMessage 信息

为什么80%的码农都做不了架构师&#xff1f;>>> public class Users{public int Id { get; set; }public string Name { get; set; }[Required(ErrorMessage "邮箱不能为空")][EmailAddressAttribute(ErrorMessage "邮箱格式不正确")]public…

this

作者&#xff1a;李挺链接&#xff1a;https://www.zhihu.com/question/19636194/answer/123274198来源&#xff1a;知乎著作权归作者所有&#xff0c;转载请联系作者获得授权。关于 this 的描述&#xff0c;曾经在 stackoverflow 上看到了一篇回答写的非常详尽&#xff0c;下面…

DeviceNet 消息类型

DeviceNet是一种低成本的通讯总线链接&#xff0c;具有开放现场网络标准&#xff0c;规范和协议都是开放的。DeviceNet将控制和数据融合在一起&#xff0c;信息具有数据标识区&#xff0c;网络利用标识区进行优先级仲裁&#xff0c;可以高效传送I/O数据。 DeviceNet有两种不同类…

【pyqt5学习——信号与槽】实例计时器(解决界面卡顿问题)

目录 一、方法一&#xff1a;另开线程 1、什么是信号与槽 1&#xff09;GUI控件&#xff08;信号&#xff09;与槽 2&#xff09;自定义信号与槽 2、实战1&#xff1a;计时器&#xff08;不自定义信号槽和不使用多线程&#xff09; 1&#xff09;界面设计——利用qt-desi…