码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForces 545C Woodcutters (贪心orDP)

时间:2015-09-17 10:14:33      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:cf   贪心   

【题目链接】:click here~~

【题目大意】:

有n棵树,给出每棵树的位置和高度,然后把树砍掉,树可以向左倒也可以向右倒。输出最多能砍几棵树。 
【思路】:利用贪心的思想。第一棵树的左边和最后一棵树的右边没树,所以他们向两边倒,然后对于中间的树来说,首先先向左边倒,然后左边距离如果不够的话再向右边倒,向右倒的时候注意更新一下距离。

代码:

/*  
* Problem: CodeForces 545C
* Running time: 46MS  
* Complier: G++  
* Author: herongwei 
* Create Time: 7:59 2015/9/17 星期四
*/  

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N=1e5+100;
const int inf=0x7f7f7f7f;
struct node{
    int codx,heg;  // coordinate and height
    bool ck;
} arr[N];
int main(){
    int t,n,m;
    scanf("%d",&t);
    for(int i=1; i<=t; ++i){
        scanf("%d %d",&arr[i].codx,&arr[i].heg);
    }
    arr[0].codx=-inf; // init
    arr[t+1].codx=inf;
    int s=0;
    for(int i=1; i<=t; ++i){  // left
         if(arr[i].codx-arr[i].heg>arr[i-1].codx){
             ++s;
             continue;
         }
         if(arr[i].codx+arr[i].heg<arr[i+1].codx){ //right
             ++s;
             arr[i].codx+=arr[i].heg;
         }
    }
    printf("%d\n",s);
    return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

CodeForces 545C Woodcutters (贪心orDP)

标签:cf   贪心   

原文地址:http://blog.csdn.net/u013050857/article/details/48516827

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!