博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C - Woodcutters
阅读量:5058 次
发布时间:2019-06-12

本文共 2381 字,大约阅读时间需要 7 分钟。

Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u

 

Description

Little Susie listens to fairy tales before bed every day. Today's fairy tale was about wood cutters and the little girl immediately started imagining the choppers cutting wood. She imagined the situation that is described below.

There are n trees located along the road at points with coordinates x1, x2, ..., xn. Each tree has its height hi. Woodcutters can cut down a tree and fell it to the left or to the right. After that it occupies one of the segments [xi - hi, xi] or [xi;xi + hi]. The tree that is not cut down occupies a single point with coordinate xi. Woodcutters can fell a tree if the segment to be occupied by the fallen tree doesn't contain any occupied point. The woodcutters want to process as many trees as possible, so Susie wonders, what is the maximum number of trees to fell.

 

Input

The first line contains integer n (1 ≤ n ≤ 105) — the number of trees.

Next n lines contain pairs of integers xi, hi (1 ≤ xi, hi ≤ 109) — the coordinate and the height of the і-th tree.

The pairs are given in the order of ascending xi. No two trees are located at the point with the same coordinate.

 

Output

Print a single number — the maximum number of trees that you can cut down by the given rules.

 

Sample Input

Input
5 1 2 2 1 5 10 10 9 19 1
Output
3
Input
5 1 2 2 1 5 10 10 9 20 1
Output
4

Hint

In the first sample you can fell the trees like that:

  • fell the 1-st tree to the left — now it occupies segment [ - 1;1]
  • fell the 2-nd tree to the right — now it occupies segment [2;3]
  • leave the 3-rd tree — it occupies point 5
  • leave the 4-th tree — it occupies point 10
  • fell the 5-th tree to the right — now it occupies segment [19;20]

In the second sample you can also fell 4-th tree to the right, after that it will occupy segment [10;19].

 

题意:一条路上有树,树有高度h,我们可以将树向左或向右砍倒只要它倒下去不会压到其他树(不论这些树是站着还是倒下了)。求最多可以砍倒多少树。

 

这一场cf真是水的一匹,我当时怎么没打!!!简直上分福利局。

我们只要按照题目给定的操作走一遍就可以了。优先向左倒,就连数据都已经给你排好序了。

 

附AC代码:

1 #include
2 using namespace std; 3 4 long long x[100010]; 5 long long h[100010]; 6 7 int main(){ 8 int n; 9 cin>>n;10 for(int i=0;i
>x[i]>>h[i];12 }13 if(n>2){14 int ans=2;15 for(int i=1;i
x[i-1]){17 ans++;18 }19 else if(x[i]+h[i]

 

转载于:https://www.cnblogs.com/Kiven5197/p/5709828.html

你可能感兴趣的文章
SVN使用教程总结
查看>>
assist x win7 破解版
查看>>
ajax导出excel文件并增加等待动画效果
查看>>
关于ILOG Elixir
查看>>
JS 浏览器对象
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
虚拟中没有eth0
查看>>
Unity 3D游戏开发学习路线(方法篇)
查看>>
BZOJ2049[Sdoi2008]Cave 洞穴勘测(LCT模板)
查看>>
vuex插件
查看>>
网络__笔记_TCP/IP详解___第一章
查看>>
屏幕绘图最佳利器Pointfix,绿色中文版
查看>>
2011年12月09日
查看>>
[ZJOI2007]棋盘制作 【最大同色矩形】
查看>>
合并单元格
查看>>
swift-初探webView与JS交互
查看>>
IOS-图片操作集合
查看>>
Android bitmap图片处理
查看>>
Android应用程序进程启动过程的源代码分析
查看>>