【BZOJ4099】Trapped in the Haybales Gold STL
【BZOJ4099】Trapped in the Haybales Gold
Description
Input
Output
Sample Input
8 1
1 4
8 8
7 15
4 20
Sample Output
题解:这种思路题果然难搞,无奈上官网看的题解。
如果我们将干草堆按坐标排序,对于某段区间[i,j],加入Bessie能突破[i+1,j-1]内的所有干草,但是就是突破不了[i,j],那就说明[i,j]里面一定没有比i,j更大的干草堆
因此,我们将干草堆按大小从大到小排序,一个一个加到坐标轴上,每加入一个干草堆,就找到它的前驱和后继,并分别判断这两段区间能否突破,如果不能,将区间标记一下就好了(我比较懒用的差分数组来打标记)
前驱后继可以用set来维护,但注意查询到前驱后继时我们还需要知道前驱后继的干草堆大小,这个记录一下排在第i位(按坐标排序)的干草堆编号就行了
#include <cstdio>
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
const int maxn=100010;
int h[maxn],x[maxn],rx[maxn],rh[maxn];
bool cmp1(int a,int b)
{
return x[a]<x[b];
}
bool cmp2(int a,int b)
{
return h[a]>h[b];
}
int s[maxn],sum;
int n,ref[maxn],ans;
set <int> ms;
int main()
{
scanf("%d",&n);
int i,j;
for(i=1;i<=n;i++) scanf("%d%d",&h[i],&x[i]),rx[i]=rh[i]=i;
//rx,rh存储的其实是编号,我们是在将编号排序
sort(rx+1,rx+n+1,cmp1);
for(i=1;i<=n;i++)
{
ref[i]=x[rx[i]];
x[rx[i]]=i;
}
sort(rh+1,rh+n+1,cmp2);
set<int>::iterator it;
for(i=1;i<=n;i++)
{
it=ms.lower_bound(x[rh[i]]);
if(it!=ms.begin()&&!ms.empty())
{
it--;
j=rx[*it];
if(ref[x[rh[i]]]-ref[x[j]]<=min(h[rh[i]],h[j]))
{
s[x[j]]++;
s[x[rh[i]]]--;
}
}
it=ms.upper_bound(x[rh[i]]);
if(it!=ms.end())
{
j=rx[*it];
if(ref[x[j]]-ref[x[rh[i]]]<=min(h[rh[i]],h[j]))
{
s[x[rh[i]]]++;
s[x[j]]--;
}
}
ms.insert(x[rh[i]]);
}
for(i=1;i<=n;i++)
{
ans+=(sum>0)*(ref[i]-ref[i-1]);
sum+=s[i];
}
printf("%d",ans);
return 0;
}
【BZOJ4099】Trapped in the Haybales Gold STL的更多相关文章
- 【leetcode】1219. Path with Maximum Gold
题目如下: In a gold mine grid of size m * n, each cell in this mine has an integer representing the amou ...
- 【Codeforces752D】Santa Claus and a Palindrome [STL]
Santa Claus and a Palindrome Time Limit: 20 Sec Memory Limit: 512 MB Description 有k个串,串长都是n,每个串有一个a ...
- 【UVA】12504 Updating a Dictionary(STL)
题目 题目 分析 第一次用stringstream,真TMD的好用 代码 #include <bits/stdc++.h> using namespace std; int ...
- 【pat】C++之刷题常用STL容器整理
1.vector 动态数组,方便的动态扩容,方便的变量初始化(int类型默认初始化为0,bool默认初始化为false),可以用来实现邻接表(结点数太多的图). 头文件 #include<vec ...
- P1450 包裹快递 RP+14【二分】
[题目链接]:https://vijos.org/p/category/%E5%85%B6%E4%BB%96,%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE 描述 一个快递公 ...
- 【BZOJ4101】[Usaco2015 Open]Trapped in the Haybales Silver 二分
[BZOJ4101][Usaco2015 Open]Trapped in the Haybales (Silver) Description Farmer John has received a sh ...
- 【BZOJ】1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
[题意]给定n头牛,k个特色,给出每头牛拥有哪些特色的二进制对应数字,[i,j]平衡当且仅当第i~j头牛的所有特色数量都相等,求最长区间长度. [算法]平衡树+数学转化 [题解]统计前缀和sum[i] ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- 【POJ3169 】Layout (认真的做差分约束)
Layout Description Like everyone else, cows like to stand close to their friends when queuing for ...
随机推荐
- 批量改名的多种方法stu_3_finished.jpg 去掉finished,stu_{1..20}_finished.jpg
方法一:rename修改文件名 rename "finished" "" *.jpg [root@ob1 scripts]# rename "fini ...
- Hibernate-【查询】
01.HQL查询方式 02.QBC查询方式 02.原始SQL查询方式
- js学习笔记12----json数据格式,语法,遍历
1.json数据格式:var json={} 示例一: var user = {'name':'sese','age':'24','sex':'女'} console.log(user.age); / ...
- zqgame《每日一言》
优秀决策者九特质1.能够接受不确定性:2.做事懂得轻重缓急:3.善于聆听:4.能够长远地看问题:5.能够看到大局,以大局为重:6.做事不优柔寡断,干脆利索.立即行动:7.善于独立思考:8.能充分调动团 ...
- am335x watchdog
am335x watchdog 内核文档kernel/Documentation/watchdog Qt@aplex:~/kernel/7109/linux-3.2.0/Documentation/w ...
- Intellij IDEA:maven的本地仓库问题
不知是否我个人的问题,Intellij IDEA中设置的 maven本地仓库的位置 经常失效,动辄变回默认的路径(~/.m2/repository),然后疯狂下载内容. 很抓狂! 今天认真思考了一番, ...
- e554. 在浏览器状态栏中显示信息
// See also e551 精简的Applet applet.showStatus("Your Message Here"); Related Examples
- C#代理多样性
一.代理 首先我们要弄清代理是个什么东西.别让一串翻译过来的概念把大家搞晕了头.有的文章把代理称委托.代表等,其实它们是一个东西,英文表述都是“Delegate”.由于没有一本权威的书来规范这个概念, ...
- Unity3D-光照贴图技术
概念 Lightmapping光照贴图技术是一种增强静态场景光照效果的技术,其优点是可以通过较少的性能消耗使静态场景看上去更加真实,丰富,更加具有立体感:缺点是不能用来实时地处理动态光照.当游戏场景包 ...
- Jquery实现上下移动和排序代码
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...