NOIp2005 过河【dp+离散化】By cellur925
$30pts$
状态和转移都比较好想:设$f[i]$表示跳到$i$位置,踩到的最小石子数。转移方程也很明了,为$f[i]$=$min${$f[i-j]$),,这个位置有石子时答案再加1,$s<=j<=t$。
但是出了几次小坑 :首先答案不一定是$f[l]$,因为可能跳过去,但也算到达彼岸了。其次我用的$stone$数组不再代表石子个数,而是下标,所以开到$10000$。
- #include<cstdio>
- #include<algorithm>
- #include<cstring>
- using namespace std;
- int l,s,t,m,ans=;
- int f[],stone[];
- int main()
- {
- scanf("%d%d%d%d",&l,&s,&t,&m);
- for(int i=;i<=m;i++)
- {
- int qwq=;
- scanf("%d",&qwq);
- stone[qwq]=;
- }
- memset(f,,sizeof(f));
- f[]=;
- for(int i=;i<=l;i++)
- {
- for(int j=s;j<=t;j++)
- {
- if(i-j<) break;
- f[i]=min(f[i-j],f[i]);
- }
- if(stone[i]) f[i]++;
- }
- for(int i=;i<=t;i++) ans=min(ans,f[l-i]+stone[l]);
- printf("%d",ans);
- return ;
- }
30 pts
$100pts$
下标太大了呀...达到了丧心病狂的$1e9$。考虑优化,转移貌似没得搞,考虑状态优化。其实注意到这个条件我们首先就应该想到离散化。因为虽然长度很大,但石子个数却很小。也就是说,两个石子间可能会有很长的空隙。
有两个压缩方法:膜2520和膜72。(一步青蛙最多跳10个单位)2520是1,2,3,4,5,6,7,8,9,10的最小公倍数,因此从一个点出发,无论青蛙能跳多少距离,它一定能到2520。当两个石子间的距离大于2520,我们对其取膜。因为当距离大于2520时,我们一定可以连续跳某次,不经过任何石子。这样我们就成功地进行了离散化。
同上,最后我们还要枚举跳过(一声)的情况。
- #include<cstdio>
- #include<algorithm>
- #include<cstring>
- #define maxn 1000000
- using namespace std;
- int l,s,t,m,ans=;
- int stone[maxn],d[maxn],flag[maxn],f[maxn];
- int main()
- {
- scanf("%d",&l);
- scanf("%d%d%d",&s,&t,&m);
- for(int i=;i<=m;i++) scanf("%d",&stone[i]);
- sort(stone+,stone++m);
- for(int i=;i<=m;i++) d[i]=(stone[i]-stone[i-])%;
- for(int i=;i<=m;i++)
- {
- stone[i]=stone[i-]+d[i];
- flag[stone[i]]=;
- }
- memset(f,,sizeof(f));
- f[]=;
- for(int i=;i<=stone[m]+t;i++)
- {
- for(int j=s;j<=t;j++)
- {
- if(i-j<) break;
- f[i]=min(f[i-j],f[i]);
- }
- if(flag[i]) f[i]++;
- }
- for(int i=;i<=t;i++) ans=min(ans,f[i+stone[m]]);
- printf("%d",ans);
- return ;
- }
AC
NOIp2005 过河【dp+离散化】By cellur925的更多相关文章
- NOIP2005过河[DP 状态压缩]
题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数 ...
- P1052 过河(离散化+dp)
P1052 过河 dp不难,重点是要想到离散化. 石子个数$<=100$意味着有大量空间空置,我们可以缩掉这些空间. 实现的话自己yy下就差不多了. #include<iostream&g ...
- [codevs1105][COJ0183][NOIP2005]过河
[codevs1105][COJ0183][NOIP2005]过河 试题描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青 ...
- POJ - 3666 Making the Grade(dp+离散化)
Description A straight dirt road connects two fields on FJ's farm, but it changes elevation more tha ...
- CodeForces 55D "Beautiful numbers"(数位DP+离散化处理)
传送门 参考资料: [1]:CodeForces 55D Beautiful numbers(数位dp&&离散化) 我的理解: 起初,我先定义一个三维数组 dp[ i ][ j ][ ...
- CF13C Sequence(DP+离散化)
题目描述 给定一个序列,每次操作可以把某个数+1-1.要求把序列变成非降数列.求最少的修改次数. 输入输出样例 输入 #1 - 输出 #1 4 输入 #2 输出 #2 1 解题思路 这题是一道非常好题 ...
- 【题解】洛谷P1052 [NOIP2005TG] 过河(DP+离散化)
题目来源:洛谷P1052 思路 一开始觉得是贪心 但是仔细一想不对 是DP 再仔细一看数据不对 有点大 如果直接存下的话 显然会炸 那么就需要考虑离散化 因为一步最大跳10格 那么我们考虑从1到10都 ...
- 洛谷 P1052 过河 (离散化+dp)
dp非常好想, f[i] = min(f[i-len] + stone[i]) s <= len <= t 然后因为L非常大,所以我就不知道该怎么搞了 我看到m只有100,而L有1e9,我 ...
- [NOIP2005] 过河【Dp,思维题,缩点】
Online Judge:Luogu P1052 Label:Dp,思维题,缩点,数学 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子 ...
随机推荐
- 面向对象 委托变量和this的使用
委托方法: this的使用:
- iOS之UI--涂鸦画板实例
iOS之UI--涂鸦画板实例 首先是搭建框架 其他的略过,直接展示效果: 然后接下来上传搭建好两个控制器框架的源码百度云下载链接: http://pan.baidu.com/s/1skjpDox ...
- Ajax_HTTP请求以及响应
什么是HTTP请求? 就是从用户的浏览器端向服务器端发送请求 一个HTTP请求一般由四个部分组成 1.HTTP请求的方法或者动作,比如GET或者POST请求 2.请求的URL,也就是请求的地址 3.请 ...
- Android实现RecyclerView的下拉刷新和上拉载入很多其它
需求 先上效果图, Material Design风格的下拉刷新和上拉载入很多其它. 源代码地址(欢迎star) https://github.com/studychen/SeeNewsV2 假设对于 ...
- SHOW PROCESSLIST Syntax
https://dev.mysql.com/doc/refman/5.7/en/show-processlist.html SHOW PROCESSLIST shows you which threa ...
- 20170301 Excel 导出函数XXL_SIMPLE_API
* XMPLT_V-COL_NO = . * XMPLT_V-COL_NAME = '物料号码'. * APPEND XMPLT_V. * * XMPLT_V-COL_NO = . * XMPLT_V ...
- TFS Server 2017 自动化部署步骤
1 第一步,在服务器上安装TFS 2 第二步,安装完TFS后需要配置你的项目,选择管理代码的方式,这里我们可以选择传统的TFS 也可以选择GIT 方式,此处我选择的GIT 方式 3 第三步,设置代理. ...
- php composer 相关及版本约束等小技巧
对于现代语言而言,包管理器基本上是标配.Java有Maven,Python有pip,Ruby有gem,Nodejs有npm.PHP的则是PEAR,不过PEAR坑不少: 依赖处理容易出问题 配置非常复杂 ...
- iOS 视图在不同View之间的切换(对于convertRect:函数的一些理解)
可以通过以下函数完成坐标体系在不同View之间的切换,如下面是完成当前View向ParentView坐标的转换(一个矩阵转换)CGRect parentRect = [currentView conv ...
- jvm虚拟机配置 深度好文
http://blog.csdn.net/kthq/article/details/8618052