题目链接

题意:

n个树,在x1,x2,。。。,xn的位置,树的高度依次是h1,h2,。。。,hn

求的是当把树砍倒时候,不占用相邻树的位置,最大砍树个数

可向左 向右砍,即树向左向右倒,很显然 当树的棵树大于1的时候,一定至少可以砍倒两棵树,位于最左和最右的两棵树可以直接砍倒

可以先考虑左砍树,再考虑右砍树

满足左砍树时候,不用考虑右砍树。

对xi 和 hi

左砍树 树最左可到  xi – hi

当 xi – hi> x[i-1] 时候左砍成立  x[i-1] 更新到x[i]

右砍树 树最右可到 x[i] + h[i]

当  x[i] + h[i] < x[i+1] 时候右砍成立  x[i] 更新到 x[i] + h[i]

Java程序

import java.util.Scanner;

public class C545 {
static void run(){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] x= new int[n];
int[] h=new int [n];
for(int i=0;i<n;i++){
x[i]=sc.nextInt();
h[i]=sc.nextInt();
}
int count = 2;
if(n==1){
System.out.println(1);
return;
}
for(int i=1;i<n-1;i++){
int left = x[i] - h[i];
int right = x[i] + h[i];
if(left>x[i-1] || right<x[i+1]) count ++;
if(left>x[i-1]) x[i-1] = x[i];
else if(right< x[i+1]) x[i] = right;
}
System.out.println(count);
}
public static void main(String[] args){
run();
}
}

Python程序

def C545():
n = input()
w = [map(int,raw_input().split()) for _ in xrange(n)]
ans = 2
if n <= 2:
print n
exit(0)
for i in xrange(1,n-1):
x,h = w[i]
if x - h > w[i-1][0]:
ans += 1
elif x + h < w[i+1][0]:
w[i][0] += w[i][1]
ans += 1
print ans if __name__=='__main__':
C545()

545C. Woodcutters的更多相关文章

  1. Codeforces 545C Woodcutters

    http://codeforces.com/contest/545/problem/C 题目大意: 给n棵树的在一维数轴上的坐标,以及它们的高度.现在要你砍倒这些树,树可以向左倒也可以向右倒,砍倒的树 ...

  2. (贪心 or DP)Woodcutters -- Codefor 545C

    http://codeforces.com/contest/545/problem/C  Woodcutters time limit per test 1 second memory limit p ...

  3. CF R303 div2 C. Woodcutters

    C. Woodcutters time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  4. Codeforces Round #303 (Div. 2) C. Woodcutters 贪心

    C. Woodcutters Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/545/probl ...

  5. 「日常训练」Woodcutters(Codeforces Round 303 Div.2 C)

    这题惨遭被卡..卡了一个小时,太真实了. 题意与分析 (Codeforces 545C) 题意:给定\(n\)棵树,在\(x\)位置,高为\(h\),然后可以左倒右倒,然后倒下去会占据\([x-h,x ...

  6. C - Woodcutters

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

  7. DP Codeforces Round #303 (Div. 2) C. Woodcutters

    题目传送门 /* 题意:每棵树给出坐标和高度,可以往左右倒,也可以不倒 问最多能砍到多少棵树 DP:dp[i][0/1/2] 表示到了第i棵树时,它倒左或右或不动能倒多少棵树 分情况讨论,若符合就取最 ...

  8. CF 545C

    题意: 砍树, 树会向左或者向右倒,数不能倒重叠, 问最多可以砍多少树 思路: 贪心 + Dp吧, 树要尽可能网左倒,这样对后面的树影响较小, 才是最优状态 #include<iostream& ...

  9. 牛客 545C 出题人的数组 (贪心)

    出题人有两个数组A,B,请你把两个数组归并起来使得$cost=\sum i c_i$最小. 归并要求原数组的数的顺序在新数组中不改变. 贪心水题 对于一段序列$A_i,A_{i+1},...,A_r$ ...

随机推荐

  1. [转]unzip解压windows zip乱码的处理

    [转]unzip解压windows zip乱码的处理 http://blog.sina.com.cn/s/blog_6c9d65a101012gz0.html 朋友从windows传过来的zip文件, ...

  2. [原创]flexslider 中文文档 使用教程 参数手册

    要改前人用的flexslider功能,但苦于找不到详细的文档教程,折磨了好久……(所以我才说不爱乱用插件) 为了福利下之后也苦于这个问题的人,我整理总结了下我找到的一些东西.可能没那么完善正确,欢迎在 ...

  3. Django ajax MYSQL Highcharts<1>

    Another small project with django/Ajax/Mysql/Highcharts. 看下效果图  - delivery dashboard .嘿嘿 是不是还蛮好看的. 废 ...

  4. urllib3 ProxyManager

    ProxyManager is an HTTP proxy-aware subclass of PoolManager. It produces a singleHTTPConnectionPool ...

  5. c++事件内核对象(event)进程间激活(转)

    源出处:http://blog.csdn.net/richerg85/article/details/7538493 此文主要说明的是,c++中创建的一个事件内核对象可以在不同的程序(进程)间共用,也 ...

  6. 11.2Daily Scrum

    人员 任务分配完成情况 明天任务分配 王皓南 做文件的网页和数据库连接,任务编号771 实现视频上传的功能 申开亮 实现视频浏览的功能,任务编号772 实现视频浏览的功能 王宇杰 后台测试,任务编号7 ...

  7. C#开源系统大汇总(转)

    一.AOP框架        Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种 ...

  8. 利用Shell命令获取IP地址

    一 :获取单个网卡的IPv4地址,方法如下: 方法一:$/sbin/ifconfig ethX | awk '/inet addr/ {print $2}' | cut -f2 -d ":& ...

  9. MySQL中表格各页面的注意和操作项

  10. UML工具选择

    今天在考虑UML工具的选择,个人要求比较简单:能够画用例图,时序图,活动图即可. 选择的工具主要有以下三个: 1.Enterprise Architect 2.Power Designer 15 3. ...