邪恶的大叔(push)
算法:DP
分析:这道题的题目内容实在是太XE了,大叔推倒LOLI,千百年不变的真理啊……(原题来自于SPOJ_4197)
我们可以预处理出推倒某只LOLI的左边界和右边界,还要注意有可能推倒的不一定是最边上的LOLI,也可以是中间的某只LOLI,因此还要处理一下。
由此可得转移方程:
f[i]:=min(f[i],f[last[i]-1]+1);
f[i]:=min(f[i],f[left[i]-1]+1);
f[right[i]]:=min(f[right[i]],f[i-1]+1);
注:推倒确实是多米诺形式的。
program push;constmaxn=100000;typeatp=recordx,h:longint;end;varn:longint;a:array [0..maxn] of atp;last,f,left,right:array [0..maxn] of longint;procedure init;vari:longint;beginreadln(n);for i:=1 to n do readln(a[i].x,a[i].h);end;function min(x,y:longint):longint;beginif x<y then exit(x) else exit(y);end;procedure ycl;vari,j,max:longint;beginleft[1]:=1;right[n]:=n;for i:=2 to n dobegin{求能到达的最左范围且能保证这个最左范围一定是连续的。}if a[i].x-a[i-1].x<=a[i].h thenbeginleft[i]:=left[i-1];j:=left[i]-1;while (j>0) and (a[i].x-a[j].x<=a[i].h) dobeginleft[i]:=left[j];j:=left[j]-1;end;endelse left[i]:=i;end;for i:=n-1 downto 1 dobegin{求能到达的最右范围且能保证这个最右范围一定是连续的。}if a[i+1].x-a[i].x<=a[i].h thenbeginright[i]:=right[i+1];j:=right[i]+1;while (j<=n) and (a[j].x-a[i].x<=a[i].h) dobeginright[i]:=right[j];j:=right[j]+1;end;endelse right[i]:=i;end;i:=1;while i<=n dobeginfor j:=i to right[i] do last[j]:=i;i:=right[i]+1;end;end;procedure main;vari:longint;beginfillchar(f,sizeof(f),10);f[0]:=0;for i:=1 to n dobeginf[i]:=min(f[i],f[last[i]-1]+1);f[i]:=min(f[i],f[left[i]-1]+1);f[right[i]]:=min(f[right[i]],f[i-1]+1);end;end;beginassign(input,'push.in'); reset(input);assign(output,'push.out'); rewrite(output);init;ycl;main;writeln(f[n]);close(input); close(output);end.
邪恶的大叔(push)相关推荐
- 汤姆大叔 深入理解JavaScript系列(20):《你真懂JavaScript吗?》答案详解 后六道题答案...
原题目地址:http://www.cnblogs.com/TomXu/archive/2012/02/10/2342098.html 答案丰富多彩.我只是记录下自己思考了半天全部的答案. 题目一:找出 ...
- 为什么git的“ pull request”不称为“ push request”?
本文翻译自:Why is a git 'pull request' not called a 'push request'? The terminology used to merge a branc ...
- 前言 金融大叔的梦想
国际权威杂志<经济学人><福布斯>等相继报道区块链技术将影响世界.如今区块链正如风暴一般,席卷全球的金融科技界. 区块链承载自由与平等的梦想 这 些自由与平等的愿望,在从桌面互 ...
- 大叔遇上御姐丈母娘【十】
大叔遇上御姐丈母娘[十] 2011年11月24日 文/雨谣 对于曾伟这个月的慷慨,其用意是不言而喻的,不外乎是希望苏墨正式成为罗兰女婿之后,能促进自己和罗兰的关系:对此,苏墨是装聋作哑.他只是将这个月 ...
- java 0xdeadbeef_编程语言中的一些邪恶咒语,千万不要用
自从我看了 Gary Bernhardt 备受推崇的一个视频 Wat,就惊异于特定编程语言的怪异行为.相较于其他编程语言来说,某些编程语言的行为更出乎意料.例如,有一整本书是针对 Java 的边缘案例 ...
- 解决gitte提交报错 error: GE007: Your push would publish a private email address.
错误情况: gitte提交报错,无法提交上去,报错如下: remote: Powered by GITEE.COM [GNK-6.0] remote: error: GE007: Your push ...
- Git 常用操作(6)- 推送到远程仓库(git push)删除远程分支(git push origin --delete)
1. git remote add--添加远程仓库 在GitHub 上创建的仓库路径为 "git@github.com:用户名/git-tutorial.git".现在我们用git ...
- Git 常用操作(5)- git clone/git checkout -b/git diff/git push/git pull
1. git clone--获取远程仓库 当 git fetch 命令从服务器上抓取本地没有的数据时,它并不会修改工作目录中的内容.它只会获取数据然后 让你自己合并. 然而,有一个命令叫作 git p ...
- git push 时不用每次都输入密码的方法
在本地克隆下来的git仓库中找到 .git 目录 (.git 目录是隐藏文件夹 在组织->文件夹和搜索选项-> 查看选项卡 -> 隐藏文件和文件夹 -> 显示隐藏的文件.文件夹 ...
最新文章
- 爬虫学习笔记(二十一)—— Appium
- 一种新的url定向技术-使用@与/?
- python内置字符串处理函数_Python内置的字符串处理函数
- linux笔记_文件搜索命令
- 微信小程序实战 购物车功能
- oracle生成顺序编号,Oracle排序以及序号的输出 | 学步园
- 1015. 德才论 (25)-PAT乙级真题
- 程序员刚入职很痛苦_在中国,程序员这行能干一辈子吗?
- InnoDB缓存相关优化
- 617.合并二叉树(力扣leetcode) 博主可答疑该问题
- 【读书笔记-数据挖掘概念与技术】数据仓库与联机分析处理(OLAP)
- 新浪微博开放平台API访问频率限制解决方法
- TP5序列化和反序列化报错!缓存溢出
- oracle查询日期当天,oracle获取今天时间数据
- 微信端跳到外部浏览器进行apk文件下载
- 蓝桥杯 2019年号字串
- C++11 lambda匿名函数看这一篇足以
- 计算机维修志愿活动策划书,“义务维修,温暖校园”志愿服务活动策划书
- Lync问题解决之在Lync客户端中,无法查看到聊天记录
- c语言双重循环教程,C语言教程之如何进行循环的嵌套详细程序实例说明