这题惨遭被卡。。卡了一个小时,太真实了。

题意与分析 (Codeforces 545C)

题意:给定\(n\)棵树,在\(x\)位置,高为\(h\),然后可以左倒右倒,然后倒下去会占据\([x-h,x]\)或者\([x,x+h]\)区间,如果不砍伐,占据\([x,x]\)区域。

问你最多砍多少棵树,砍树的条件是倒下去后占有的区间不能被其他树占据。

分析:在这条题目的条件下,这是一个傻逼贪心题。(然后我读错两次题目,怎么也想不出来贪心策略。。。。)

很简单的策略:能往左倒往左倒,能往右倒往右倒。因为树的倒下无论如何只会影响额外的一棵树!!(换句话说,如果说倒下的区间不用考虑树的存在,就很有意思了)举个例子,考虑一种极端情况:第\(i\)棵树到第\(n\)棵树如果挨个往左倒正好完美覆盖。那么这种情况下你第\(i-1\)棵树如果可以往右倒照样可以往右倒,因为每棵树的倒下只影响另外左右一个树,那么我大不了第\(i\)棵树不倒,我的答案不会更差。这样就确定了贪心策略的正确性。

代码

#include <bits/stdc++.h>
#define MP make_pair
#define PB push_back
#define fi first
#define se second
#define ZERO(x) memset((x), 0, sizeof(x))
#define ALL(x) (x).begin(),(x).end()
#define rep(i, a, b) for (repType i = (a); i <= (b); ++i)
#define per(i, a, b) for (repType i = (a); i >= (b); --i)
#define QUICKIO \
ios::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
using namespace std;
using ll=long long;
using repType=int; int main()
{
int n; cin>>n;
pair<int,int> tree[100005];
rep(i,1,n) cin>>tree[i].fi>>tree[i].se;
int cnt=0;
int npos=0,ntree=1;
int cut[100005]; ZERO(cut);
rep(i,1,n)
{
int l_boundary=tree[i].fi-tree[i].se,
r_boundary=tree[i].fi+tree[i].se;
bool lok=true;
per(j,i-1,1)
{
if(tree[j].fi>=l_boundary || (cut[j]==2&&tree[j].fi+tree[j].se>=l_boundary))
{
lok=false; break;
}
if(tree[j].fi+tree[j].se<l_boundary) break;
}
if(lok) { cut[i]=1; continue; }
bool rok=true;
rep(j,i+1,n)
{
if(tree[j].fi>r_boundary) break;
else if(tree[j].fi<=r_boundary) {rok=false; break;}
}
if(rok) cut[i]=2;
}
int ans=0;
rep(i,1,n) if(cut[i]) ans++;
cout<<ans<<endl;
return 0;
}

「日常训练」Woodcutters(Codeforces Round 303 Div.2 C)的更多相关文章

  1. DP Codeforces Round #303 (Div. 2) C. Woodcutters

    题目传送门 /* 题意:每棵树给出坐标和高度,可以往左右倒,也可以不倒 问最多能砍到多少棵树 DP:dp[i][0/1/2] 表示到了第i棵树时,它倒左或右或不动能倒多少棵树 分情况讨论,若符合就取最 ...

  2. 水题 Codeforces Round #303 (Div. 2) D. Queue

    题目传送门 /* 比C还水... */ #include <cstdio> #include <algorithm> #include <cstring> #inc ...

  3. 贪心 Codeforces Round #303 (Div. 2) B. Equidistant String

    题目传送门 /* 题意:找到一个字符串p,使得它和s,t的不同的总个数相同 贪心:假设p与s相同,奇偶变换赋值,当是偶数,则有答案 */ #include <cstdio> #includ ...

  4. 水题 Codeforces Round #303 (Div. 2) A. Toy Cars

    题目传送门 /* 题意:5种情况对应对应第i或j辆车翻了没 水题:其实就看对角线的上半边就可以了,vis判断,可惜WA了一次 3: if both cars turned over during th ...

  5. 「日常训练」ZgukistringZ(Codeforces Round #307 Div. 2 B)

    题意与分析(CodeForces 551B) 这他妈哪里是日常训练,这是日常弟中弟. 题意是这样的,给出一个字符串A,再给出两个字符串B,C,求A中任意量字符交换后(不限制次数)能够得到的使B,C作为 ...

  6. 「日常训练」Queue(Codeforces Round 303 Div.2 D)

    简单到让人不敢相信是D题,但是还是疏忽了一点. 题意与分析 (Codeforces 545D) 题意:n人排队,当一个人排队的时间超过他需要服务的时间就会厌烦,现在要求一个最优排列使得厌烦的人最少. ...

  7. 「日常训练」Watering Flowers(Codeforces Round #340 Div.2 C)

    题意与分析 (CodeForces 617C) 题意是这样的:一个花圃中有若干花和两个喷泉,你可以调节水的压力使得两个喷泉各自分别以\(r_1\)和\(r_2\)为最远距离向外喷水.你需要调整\(r_ ...

  8. 「日常训练」Alternative Thinking(Codeforces Round #334 Div.2 C)

    题意与分析 (CodeForces - 603A) 这题真的做的我头疼的不得了,各种构造样例去分析性质... 题意是这样的:给出01字符串.可以在这个字符串中选择一个起点和一个终点使得这个连续区间内所 ...

  9. 「日常训练」More Cowbell(Codeforces Round #334 Div.2 B)

    题意与分析(CodeForces 604B) 题意是这样的:\(n\)个数字,\(k\)个盒子,把\(n\)个数放入\(k\)个盒子中,每个盒子最多只能放两个数字,问盒子容量的最小值是多少(水题) 不 ...

随机推荐

  1. 20145238-荆玉茗 《网络对抗》-逆向及Bof基础实践

    20145238荆玉茗<网络对抗>-逆向及Bof基础实践 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:m ...

  2. 如何解决“当前上下文中不存在名称“XXXXXXXX””的问题

    如果你是用的Visual Studio 2017,如果你项目中的.cshtml文件出现编译调试一切正常,但是在设计时查看出现下面的提示时: 错误 CS0103 当前上下文中不存在名称“ViewBag” ...

  3. tomcat配置APR

    转载 Windows下配置Tomcat的Apr(包括Https)  tomcat bio nio apr 模式性能测试与个人看法 一.windows 下配置Tomcat的APR: 1.到Apache  ...

  4. 关于iOS 3D touch 指纹验证的随笔

    file:///Users/OWen/Desktop/3DTouch.png 随着iOS系统不断的更新迭代,苹果总会推出一些新的功能,今天就研究了一下iOS8之后推出的指纹验证的功能,然后写了一个小d ...

  5. 锐捷交换机实验案例:vlan间互访的配置与验证

    组网需求: 1.如下图所示,某用户内网被划分为VLAN 10.VLAN 20.VLAN 30,以实现相互间的2 层隔离: 2.3 个VLAN 对应的IP 子网分别为192.168.10.0/24 .1 ...

  6. Kindeditor图片上传Controller

    asp.net MVC Kindeditor 图片.文件上传所用的Controller [HttpPost, AllowAnonymous] public ActionResult UploadIma ...

  7. JAVA数据类型能串门不?

    JAVA这几种数据类型,能否串门?入了人家门,就得按人家规矩来,入乡随俗哦,难免发生有自觉的 还有不情愿被动的. 自动类型转换 自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型.在图中,黑 ...

  8. Epub 阅读器 - iOS

    因项目需求接触的 EPub 阅读器,前前后后尝试了很多库,最后找到了个相对兼容不错的展开了调试;其中对解压缩和数据加载方面进行了改造优化,使其更加的完美; 其大概原理是首先将 epub 文件解压后得到 ...

  9. python类的反射使用方法

    曾经,博主的房东养了只金毛叫奶茶,今天就拿它当议题好了. 博主写本文时正在被广州的蚊子围攻. #反射练习 class animal(object): def __init__(self,name,fo ...

  10. 一个hibernate中的异常:NonUniqueDiscoveredSqlAliasException

    在hibernate中用SQL查询返回的结果集中,列名或别名必须唯一,否则会报下面的错误.返回的结果集中,列名或别名可以没有,但只能有一列没有. //空别名重复的情况:org.hibernate.lo ...