【题解】洛谷P1052 [NOIP2005TG] 过河(DP+离散化)
题目来源:洛谷P1052
思路
一开始觉得是贪心
但是仔细一想不对 是DP
再仔细一看数据不对 有点大
如果直接存下的话 显然会炸
那么就需要考虑离散化
因为一步最大跳10格 那么我们考虑从1到10都跳一遍
所以最大公倍数为2520
那么我们就可以枚举两个石头中间的长度mod 2520 即可缩短总长度
详细见代码
代码
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 350000
#define mod 2520
int l,s,t,m,ans;
int f[maxn],stone[maxn],a[],d[];
int main()
{
cin>>l>>s>>t>>m;
for(int i=;i<=m;i++) cin>>a[i];
sort(+a,+a+m);//可能是乱序
for(int i=;i<=m;i++) d[i]=(a[i]-a[i-])%mod;//枚举两个石头之间的长度
for(int i=;i<=m;i++)
{
a[i]=a[i-]+d[i];//计算新的长度
stone[a[i]]=;//此处有石头
}
l=a[m];//新的长度
for(int i=;i<=l+t;i++) f[i]=m;//初始化不可能超过总石头数
f[]=;//起点为0
for(int i=;i<=l+t;i++)//l+t是因为可能会跳出去
{
for(int j=s;j<=t;j++)//枚举步数
{
if(i-j>=)//边界条件
f[i]=min(f[i],f[i-j]);//取最小
f[i]+=stone[i];//如果有石头就会加1
}
}
ans=m;//初始化
for(int i=l;i<l+t;i++)//枚举终点到终点后最大步数的所有答案最小值
ans=min(ans,f[i]);
cout<<ans;
}
【题解】洛谷P1052 [NOIP2005TG] 过河(DP+离散化)的更多相关文章
- 洛谷P1244 青蛙过河 DP/思路
又是一道奇奇怪怪的DP(其实是思路题). 原文戳>>https://www.luogu.org/problem/show?pid=1244<< 这题的意思给的挺模糊,需要一定的 ...
- 【洛谷P1052】过河 离散化+dp
题目大意:给定一个长度为 N 的序列,有 M 个点对答案的贡献为 1,其余为 0,现从起点出发,每次只能走 [s,t] 个单位,求从起点走到终点时答案贡献最小是多少. 题解:由于 N 很大,无法直接记 ...
- 洛谷p1052过河 路径压缩+dp
洛谷 P1052 过河 思路部分可以看这篇博客 我将在这里对其进行一些解释与补充 首先我们先看题 乍一看 这不是模板题吗 然后开开心心的敲了一个简单dp上去 #include<iostream& ...
- 洛谷P1052 过河
P1052 过河 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上. 由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青 ...
- 洛谷1387 二维dp 不是特别简略的题解 智商题
洛谷1387 dp题目,刚开始写的时候使用了前缀和加搜索,复杂度大概在O(n ^ 3)级别,感觉这么写还是比较对得起普及/提高-的难度的..后来看了题解区各位大神的题解,开始一脸mb,之后备受启发. ...
- 题解-洛谷P4229 某位歌姬的故事
题面 洛谷P4229 某位歌姬的故事 \(T\) 组测试数据.有 \(n\) 个音节,每个音节 \(h_i\in[1,A]\),还有 \(m\) 个限制 \((l_i,r_i,g_i)\) 表示 \( ...
- NOIP2017提高组Day2T2 宝藏 洛谷P3959 状压dp
原文链接https://www.cnblogs.com/zhouzhendong/p/9261079.html 题目传送门 - 洛谷P3959 题目传送门 - Vijos P2032 题意 给定一个 ...
- 洛谷P3928 Sequence2(dp,线段树)
题目链接: 洛谷 题目大意在描述底下有.此处不赘述. 明显是个类似于LIS的dp. 令 $dp[i][j]$ 表示: $j=1$ 时表示已经处理了 $i$ 个数,上一个选的数来自序列 $A[0]$ 的 ...
- 题解 洛谷P5018【对称二叉树】(noip2018T4)
\(noip2018\) \(T4\)题解 其实呢,我是觉得这题比\(T3\)水到不知道哪里去了 毕竟我比较菜,不大会\(dp\) 好了开始讲正事 这题其实考察的其实就是选手对D(大)F(法)S(师) ...
随机推荐
- ORA-12541:TNS-12560:ORA-12518:ORA-28040:ORA-01017
说明 环境(参考): Oracle 12c SQL Developer/Navicat Premium(64位)连接数据库 后续出现的错误代码: ORA-12541: no listener TNS- ...
- OkHttp完全解析之整体调用流程
前言:阅读好的代码如同观赏美景一样的美妙 OkHttp是一个Square公司在github开源的Java网络请求框架,非常流行.OkHttp 的代码并不是特别庞大,代码很多巧妙的实现,非常值得学习. ...
- Spring boot 使用WebAsyncTask处理异步任务
上文介绍了基于 @Async 注解的 异步调用编程,本文将继续引入 Spring Boot 的 WebAsyncTask 进行更灵活异步任务处理,包括 异步回调,超时处理 和 异常处理. 正文 1. ...
- daemontools检测进程,退出拉起
一.学习的原因: 为了实现在服务异常停止运行后,有一个监控程序能监控到它,并自动重新启动这个服务.以下以tomcat为例子 二.工具supervise Daemontools是一个包含了很多管理Uni ...
- js 显示 base64编码 的二进制流 图片
Data URI scheme.Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入.比如上面那串字符,其实是一张小图片,将这些字 ...
- 重建二叉树(C++和Python实现)
(说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 输入某二叉树前序遍历和中序遍历结果,请重建出该二叉树.假设输 ...
- Linux 学习笔记之关机问题
在linux领域内大多用在服务器上,很少遇到关机的操作. 正确的关机流程为:sync > shutdown > reboot > halt 关机指令为:shutdown ,你可以ma ...
- 【NLP_Stanford课堂】拼写校正
在多种应用比如word中都有拼写检查和校正功能,具体步骤分为: 拼写错误检测 拼写错误校正: 自动校正:hte -> the 建议一个校正 建议多个校正 拼写错误类型: Non-word Err ...
- 云计算之概念——IaaS、SaaS、PaaS、Daas
云计算通俗来说就是输入/输出和计算不在一个主机上.计算要用到计算设备,计算设备一般是指CPU.内存和硬盘,输入/输出设备一般是指键盘.鼠标.显示器.耳机.音响.话筒等外设.而我们的个人计算机是使用主板 ...
- 【Leetcode】【Medium】Unique Paths
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...