• 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()
  • 相关阅读:
    []==![] 为什么等于true?
    this指向问题
    Git的基本了解与使用、向github提交代码
    Javascript实现多行字符串
    常见浏览器兼容性问题与解决方案?
    Scapy——Scrapy shell的使用
    Python中单下划线和双下划线
    Python中@staticmethod和@classmethod的作用和区别
    Python多进程、多线程和协程简介
    精简Docker镜像的几个方法
  • 原文地址:https://www.cnblogs.com/bbbblog/p/4714363.html
Copyright © 2020-2023  润新知