CodeForces-545C Woodcutters 【贪心+机智】
来源:互联网 发布:mac如何收藏网页的图片 编辑:程序博客网 时间:2024/05/21 11:04
原题地址:http://codeforces.com/problemset/problem/545/C
题意解析
给n棵树的在一维数轴上的坐标,以及它们的高度。现在要你砍倒这些树,砍倒的树不能重合、当然也不能覆盖另外的树原来的位置,现在求最大可以看到的树的数目
解题思路
网上有很多人说这是DP,然而我怎么看都不需要用到DP。首先题中数据是按照坐标从小到大给出的,那我们直接从左到右每棵树依次看,那么显然可以有以下几点
- 最左边那棵树一定可以向左倒,最右边那棵树一定可以向右倒
- 每棵树,能向左倒就向左倒。(向左倒了后就不会影响下一棵)
- 每棵树,能倒就倒(每棵树向哪个方向倒,或者倒不倒,只受影旁边两棵树的影响,那么这棵树倒不倒只会影响到右边一棵树,绝不会传递给后一棵的决策)
那么很显然,这是贪心……按照这个思路,我们甚至可以边读入数据边处理,具体见下面的代码:
AC代码
//CodeForces-545C Woodcutters//AC 2016-04-14 15:02:50//greedy tricky#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>#include <cctype>#include <cstdlib>#include <cstring>#include <vector>#include <set>#include <string>#include <map>#include <queue>#include <deque>#include <list>#include <sstream>#include <stack>using namespace std;#define cls(x) memset(x,0,sizeof x)#define inf(x) memset(x,0x3f,sizeof x)#define neg(x) memset(x,-1,sizeof x)#define ninf(x) memset(x,0xc0,sizeof x)#define st0(x) memset(x,false,sizeof x)#define st1(x) memset(x,true,sizeof x)#define INF 0x3f3f3f3f#define lowbit(x) x&(-x)#define abs(x) (x>0?x:-x)#define max(x,y) (x>y?x:y)#define min(x,y) (x<y?x:y)#define bug cout<<"here"<<endl;//#define debugint main(){ #ifdef debug freopen("E:\\Documents\\code\\input.txt","r",stdin); freopen("E:\\Documents\\code\\output.txt","w",stdout); #endif long long utmost=-INF,preh=0,cur=0,curh=0; long long ans=0; int n; while(scanf("%d",&n)!=EOF) { bool left=1; utmost=-INF; ans=0; while(n--) { scanf("%I64d %I64d",&cur,&curh); if(!left)//if the previous tree didn't fall down leftwards, then check if it can fall down rightwards now { if(utmost+preh<cur)//fall rightwards { ++ans; utmost+=preh; } } //check if this tree and fall leftwards left=0; if(cur-curh>utmost) { ++ans; left=1; } utmost=cur; preh=curh; } if(!left) ++ans; printf("%lld\n",ans); } return 0;}
0 0
- CodeForces-545C Woodcutters 【贪心+机智】
- CodeForces 545C Woodcutters (贪心)
- Codeforces 545 C Woodcutters(贪心/DP)
- codeforces#303-C. Woodcutters-贪心
- CodeForces-545C Woodcutters
- Codeforces 545C Woodcutters【dp】
- codeforces 545C C. Woodcutters(dp+二分)
- Codeforces Round #303 (Div. 2) C. Woodcutters 贪心
- CF 545C Woodcutters
- C. Woodcutters
- Codeforces Round #303 (Div. 2)-C. Woodcutters(模拟)
- Codeforces 501C - Misha and Forest (机智)
- Codeforces 70C Lucky Tickets(数学+机智)
- CodeForces 275C 贪心
- codeforces C. Bits 贪心
- codeforces C. Hometask(贪心)
- Codeforces 449C 贪心
- Codeforces 794C【贪心】
- Mysql中limit的用法详解
- Java的字符串
- HDU 2569 彼岸(递推)
- Ubuntu 的应用程序都在哪里
- Python 标准库 —— xml
- CodeForces-545C Woodcutters 【贪心+机智】
- Intent来传递对象
- 借助栈实现表达式的计算
- [Java 并发] 线程的基本知识(一)
- iOS多边形按键的创建
- 两种配置大数据环境的方法Ambari以及hadoop源代码安装的步骤
- 在其他class或者view中获取MainActivity实例,以便调用其函数的方法:
- row_number() OVER(PARTITION BY)函数介绍
- Scrapy入门教程之写入数据库