「日常训练」Woodcutters(Codeforces Round 303 Div.2 C)
这题惨遭被卡。。卡了一个小时,太真实了。
题意与分析 (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)的更多相关文章
- DP Codeforces Round #303 (Div. 2) C. Woodcutters
题目传送门 /* 题意:每棵树给出坐标和高度,可以往左右倒,也可以不倒 问最多能砍到多少棵树 DP:dp[i][0/1/2] 表示到了第i棵树时,它倒左或右或不动能倒多少棵树 分情况讨论,若符合就取最 ...
- 水题 Codeforces Round #303 (Div. 2) D. Queue
题目传送门 /* 比C还水... */ #include <cstdio> #include <algorithm> #include <cstring> #inc ...
- 贪心 Codeforces Round #303 (Div. 2) B. Equidistant String
题目传送门 /* 题意:找到一个字符串p,使得它和s,t的不同的总个数相同 贪心:假设p与s相同,奇偶变换赋值,当是偶数,则有答案 */ #include <cstdio> #includ ...
- 水题 Codeforces Round #303 (Div. 2) A. Toy Cars
题目传送门 /* 题意:5种情况对应对应第i或j辆车翻了没 水题:其实就看对角线的上半边就可以了,vis判断,可惜WA了一次 3: if both cars turned over during th ...
- 「日常训练」ZgukistringZ(Codeforces Round #307 Div. 2 B)
题意与分析(CodeForces 551B) 这他妈哪里是日常训练,这是日常弟中弟. 题意是这样的,给出一个字符串A,再给出两个字符串B,C,求A中任意量字符交换后(不限制次数)能够得到的使B,C作为 ...
- 「日常训练」Queue(Codeforces Round 303 Div.2 D)
简单到让人不敢相信是D题,但是还是疏忽了一点. 题意与分析 (Codeforces 545D) 题意:n人排队,当一个人排队的时间超过他需要服务的时间就会厌烦,现在要求一个最优排列使得厌烦的人最少. ...
- 「日常训练」Watering Flowers(Codeforces Round #340 Div.2 C)
题意与分析 (CodeForces 617C) 题意是这样的:一个花圃中有若干花和两个喷泉,你可以调节水的压力使得两个喷泉各自分别以\(r_1\)和\(r_2\)为最远距离向外喷水.你需要调整\(r_ ...
- 「日常训练」Alternative Thinking(Codeforces Round #334 Div.2 C)
题意与分析 (CodeForces - 603A) 这题真的做的我头疼的不得了,各种构造样例去分析性质... 题意是这样的:给出01字符串.可以在这个字符串中选择一个起点和一个终点使得这个连续区间内所 ...
- 「日常训练」More Cowbell(Codeforces Round #334 Div.2 B)
题意与分析(CodeForces 604B) 题意是这样的:\(n\)个数字,\(k\)个盒子,把\(n\)个数放入\(k\)个盒子中,每个盒子最多只能放两个数字,问盒子容量的最小值是多少(水题) 不 ...
随机推荐
- PHP-------MySQLi 的函数
MySQLi 的函数 在数据库中找到一张是自增长的科目表表就可以, Code主键值是自增长的,name是varchar类型的. 如果想往科目表里添加一条数据,是自增长列的表中添加数据,添加完之后,取添 ...
- Linux 学习总结(五)-linux 文件系统及相关命令
一 linux文件系统概要 linux系统结构有别用于windos,他是树状结构的文件系统,在linux下我们称一切皆文件,我们将一个目录,可以成称为目录文件.linux只有一个单独的顶级目录结构.所 ...
- faster-rcnn anchor_target_layer、rpn_proposal_layer、proposal_target_layer
faster rcnn中这三层是单独生成的层,也是复现最复杂的层 anchor_target_layer作用:从众多的anchor中选取出正负样本供rpn网络学习(实际上就是把anchor和gt进行配 ...
- spring配置redis(xml+java方式)(最底层)
条件:引用好架包 <dependency> <groupId>org.springframework.data</groupId> <artifactId&g ...
- 在Mac终端中使用vim编辑文件步骤
VIM (Unix及类Unix系统文本编辑器) Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.VIM是纯粹的自由软件. http://jingya ...
- oracle系列(二)用户管理
SQL> conn /as sysdbaConnected to Oracle Database 11g Express Edition Release 11.2.0.2.0 Connected ...
- OCR
谷歌OCR光学字符识别窥探 - 简书 Tesseract OCR初探 利用Tesseract图片文字识别初探 _ TonyDeng's Blog Tesseract OCR(光学字符识别)教程 - C ...
- iOS 文件下载及断点续传
ios的下载我们可以使用的方法有:NSData.NSURLConnection.NSURLSession还有第三方框架AFNetworking和ASI 利用NSData方法和NSURLConnecti ...
- mybatis报错:未找到参数导致绑定异常
问题: 在映射文件中使用parameterMap元素时出现以下异常: org.mybatis.spring.MyBatisSystemException: nested exception is or ...
- Git简单配置ssh秘钥
执行以下命令: git config --global user.name "demo" git config --global user.email "demo@dem ...