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()
545C. Woodcutters的更多相关文章
- Codeforces 545C Woodcutters
http://codeforces.com/contest/545/problem/C 题目大意: 给n棵树的在一维数轴上的坐标,以及它们的高度.现在要你砍倒这些树,树可以向左倒也可以向右倒,砍倒的树 ...
- (贪心 or DP)Woodcutters -- Codefor 545C
http://codeforces.com/contest/545/problem/C Woodcutters time limit per test 1 second memory limit p ...
- CF R303 div2 C. Woodcutters
C. Woodcutters time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- Codeforces Round #303 (Div. 2) C. Woodcutters 贪心
C. Woodcutters Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/545/probl ...
- 「日常训练」Woodcutters(Codeforces Round 303 Div.2 C)
这题惨遭被卡..卡了一个小时,太真实了. 题意与分析 (Codeforces 545C) 题意:给定\(n\)棵树,在\(x\)位置,高为\(h\),然后可以左倒右倒,然后倒下去会占据\([x-h,x ...
- C - Woodcutters
Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Description Little ...
- DP Codeforces Round #303 (Div. 2) C. Woodcutters
题目传送门 /* 题意:每棵树给出坐标和高度,可以往左右倒,也可以不倒 问最多能砍到多少棵树 DP:dp[i][0/1/2] 表示到了第i棵树时,它倒左或右或不动能倒多少棵树 分情况讨论,若符合就取最 ...
- CF 545C
题意: 砍树, 树会向左或者向右倒,数不能倒重叠, 问最多可以砍多少树 思路: 贪心 + Dp吧, 树要尽可能网左倒,这样对后面的树影响较小, 才是最优状态 #include<iostream& ...
- 牛客 545C 出题人的数组 (贪心)
出题人有两个数组A,B,请你把两个数组归并起来使得$cost=\sum i c_i$最小. 归并要求原数组的数的顺序在新数组中不改变. 贪心水题 对于一段序列$A_i,A_{i+1},...,A_r$ ...
随机推荐
- Qt 延时
第一部分: 关于sleep函数,我们先来看一下他的作用:sleep函数是使调用sleep函数的线程休眠,线程主动放弃时间片.当经过指定的时间间隔后,再启动线程,继续执行代码.sleep函数并不能起到定 ...
- VS 与 SQLite数据库 连接
SQLite并没有一次性做到位,只有下载这些东西是不能放在vs2010中并马上使用的,下载下来的文件中有sqlite3.c/h/dll/def,还是不够用的.我们需要的sqlite3.lib文件并不在 ...
- Visual Studio 2012 [ADO.NET 实体数据模型]丢失没有的解决方法
首先打开控制面板,看是否已经安装EF,如果已经安装,先卸载,然后,首先打开安装包,找到/packages/EFTools目录下的EFTools.msi,将它们复制自己计算机的某一目录下,例如:C:\t ...
- 主元分析PCA理论分析及应用
首先,必须说明的是,这篇文章是完完全全复制百度文库当中的一篇文章.本人之前对PCA比较好奇,在看到这篇文章之后发现其对PCA的描述非常详细,因此迫不及待要跟大家分享一下,希望同样对PCA比较困惑的朋友 ...
- html5 drag api详解
可以夸张点说,如果你不会拖拽,你不是一个合格的前端开发. 回想下,以前我们是怎么实现拖拽的,主要有以下几步: 1.目标元素绑定mousedown事件,记录下此时鼠标位置和拖拽元素的位置差,分别是 di ...
- 如何撰写SCI论文的讨论部分?——经典结构 – 俗称“倒漏斗型。
- 对话机器学习大神Yoshua Bengio(上)
Yoshua Bengio教授(个人主页)是机器学习大神之一,尤其是在深度学习这个领域.他连同Geoff Hinton老先生以及 Yann LeCun(燕乐存)教授,缔造了2006年开始的深度学习复兴 ...
- 最小PE文件讨论
1.实例1国外的人写的最小的PE文件--97Bytes 4D5A0000504500004C0101006A2A58C30000000000000000040003010B01080004000000 ...
- win7/8下VirtualBox虚拟Ubuntu共享文件夹设置
实验环境: 主机:win8.1 虚拟机软件:VirtualBox4.3 虚拟的主机:centos6.5 final 亲测可用! 1. 安装增强功能包(VBoxGuestAdditions) 打开虚拟 ...
- var 和 dynamic在实际项目中的应用
先回顾一下这两个关键词的用法. var是个语法糖,是在用var声明变量的那一刻就确定了其变量的类型. 因为需要在声明的时候就确定其类型,所以要求在用var声明隐式局部变量的时候必须初始化该变量. 编译 ...