zoukankan      html  css  js  c++  java
  • 545C. Woodcutters

    题目链接

    题意:

    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()
  • 相关阅读:
    事以密成,能者低调
    时间过得真快,一晃三年过去了
    读书随记2011111
    Makefile
    ubuntu 7 下 tftp 的配置
    uboot移植到nano2410
    ubuntu 7.04 Feisty Fawn 安装手记之五:安装常用软件
    移植linux2.6.18到arm9
    移植busybox 1.4.2
    UBoot中SMDK2410的NAND Flash驱动。
  • 原文地址:https://www.cnblogs.com/theskulls/p/4714363.html
Copyright © 2011-2022 走看看