算法: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)相关推荐

  1. 汤姆大叔 深入理解JavaScript系列(20):《你真懂JavaScript吗?》答案详解 后六道题答案...

    原题目地址:http://www.cnblogs.com/TomXu/archive/2012/02/10/2342098.html 答案丰富多彩.我只是记录下自己思考了半天全部的答案. 题目一:找出 ...

  2. 为什么git的“ pull request”不称为“ push request”?

    本文翻译自:Why is a git 'pull request' not called a 'push request'? The terminology used to merge a branc ...

  3. 前言 金融大叔的梦想

    国际权威杂志<经济学人><福布斯>等相继报道区块链技术将影响世界.如今区块链正如风暴一般,席卷全球的金融科技界. 区块链承载自由与平等的梦想 这 些自由与平等的愿望,在从桌面互 ...

  4. 大叔遇上御姐丈母娘【十】

    大叔遇上御姐丈母娘[十] 2011年11月24日 文/雨谣 对于曾伟这个月的慷慨,其用意是不言而喻的,不外乎是希望苏墨正式成为罗兰女婿之后,能促进自己和罗兰的关系:对此,苏墨是装聋作哑.他只是将这个月 ...

  5. java 0xdeadbeef_编程语言中的一些邪恶咒语,千万不要用

    自从我看了 Gary Bernhardt 备受推崇的一个视频 Wat,就惊异于特定编程语言的怪异行为.相较于其他编程语言来说,某些编程语言的行为更出乎意料.例如,有一整本书是针对 Java 的边缘案例 ...

  6. 解决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 ...

  7. Git 常用操作(6)- 推送到远程仓库(git push)删除远程分支(git push origin --delete)

    1. git remote add--添加远程仓库 在GitHub 上创建的仓库路径为 "git@github.com:用户名/git-tutorial.git".现在我们用git ...

  8. Git 常用操作(5)- git clone/git checkout -b/git diff/git push/git pull

    1. git clone--获取远程仓库 当 git fetch 命令从服务器上抓取本地没有的数据时,它并不会修改工作目录中的内容.它只会获取数据然后 让你自己合并. 然而,有一个命令叫作 git p ...

  9. git push 时不用每次都输入密码的方法

    在本地克隆下来的git仓库中找到 .git 目录 (.git 目录是隐藏文件夹 在组织->文件夹和搜索选项-> 查看选项卡 -> 隐藏文件和文件夹 -> 显示隐藏的文件.文件夹 ...

最新文章

  1. 爬虫学习笔记(二十一)—— Appium
  2. 一种新的url定向技术-使用@与/?
  3. python内置字符串处理函数_Python内置的字符串处理函数
  4. linux笔记_文件搜索命令
  5. 微信小程序实战 购物车功能
  6. oracle生成顺序编号,Oracle排序以及序号的输出 | 学步园
  7. 1015. 德才论 (25)-PAT乙级真题
  8. 程序员刚入职很痛苦_在中国,程序员这行能干一辈子吗?
  9. InnoDB缓存相关优化
  10. 617.合并二叉树(力扣leetcode) 博主可答疑该问题
  11. 【读书笔记-数据挖掘概念与技术】数据仓库与联机分析处理(OLAP)
  12. 新浪微博开放平台API访问频率限制解决方法
  13. TP5序列化和反序列化报错!缓存溢出
  14. oracle查询日期当天,oracle获取今天时间数据
  15. 微信端跳到外部浏览器进行apk文件下载
  16. 蓝桥杯 2019年号字串
  17. C++11 lambda匿名函数看这一篇足以
  18. 计算机维修志愿活动策划书,“义务维修,温暖校园”志愿服务活动策划书
  19. Lync问题解决之在Lync客户端中,无法查看到聊天记录
  20. c语言双重循环教程,C语言教程之如何进行循环的嵌套详细程序实例说明

热门文章

  1. openwrt中LED的控制
  2. 如何创建Microsoft Office Starter 2010的便携式USB版本
  3. psutil的使用,获取CPU情况
  4. 如何更好的培养下一代接班人?
  5. 淘宝app端扫码登录-解决异地登录-获取Cookie-延期Cookie
  6. König定理及证明
  7. 响应式设计与自适应设计
  8. linux 服务器 ssd,linux ssd 优化
  9. TFT-LCD液晶屏光学薄膜如何增加液晶屏亮度?
  10. maven:maven可视化分析依赖关系