【BZOJ4101】[Usaco2015 Open]Trapped in the Haybales Silver 二分
【BZOJ4101】[Usaco2015 Open]Trapped in the Haybales (Silver)
Description
Input
Output
Sample Input
8 1
1 4
3 8
12 15
20 20
Sample Output
题解:当我又一次看到了这道熟悉的题,想起了几年前狂WA不止的恐惧,我屏住呼吸,再一次点开了这道题目,就在这时,我突然震惊的发现——
我TM看错题了!!!
好吧,这题说的是只能增大一个干草堆的大小,我以前一直认为是多个(也就是两个),并且还真的写出来了一种算法,拍极限数据都没问题!!
进入正题:
先讨论增大Bessie左边的干草堆的情况,我们枚举右边的干草堆j,设增大的大小为k,加高的干草堆编号为i,干草堆大小size,干草堆坐标x,容易列出方程

也就是size[i]+x[i]越大越好,前提x[i]不能太小
于是我们先处理一下size[i]+x[i]的最大值,然后二分x[i],然后更新答案就行了
增大Bessie右边的干草堆的情况也类似
#include <cstdio>
#include <cstring>
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
const int maxn=100010;
int n,m,ans;
struct bale
{
int x,d;
}s[maxn];
int f[maxn];
set<int> s1,s2;
bool cmp(bale a,bale b)
{
return a.x<b.x;
}
int main()
{
scanf("%d%d",&n,&m);
ans=1<<30;
int i,j,l,r,mid;
for(i=1;i<=n;i++) scanf("%d%d",&s[i].d,&s[i].x);
s[++n].x=m;
sort(s+1,s+n+1,cmp);
for(i=1;i<=n;i++) if(s[i].x==m)
{
m=i;
break;
}
f[m]=-1<<30;
for(i=m-1;i>=1;i--) f[i]=max(f[i+1],s[i].x+s[i].d);
for(i=m+1;i<=n;i++) f[i]=max(f[i-1],s[i].d-s[i].x);
for(i=m+1;i<=n;i++)
{
l=1,r=m;
while(l<r)
{
mid=l+r>>1;
if(s[i].x-s[mid].x<=s[i].d) r=mid;
else l=mid+1;
}
if(r<m) ans=min(ans,max(0,s[i].x-f[r]));
}
for(i=1;i<m;i++)
{
l=m+1,r=n+1;
while(l<r)
{
mid=l+r>>1;
if(s[mid].x-s[i].x<=s[i].d) l=mid+1;
else r=mid;
}
if(l>m+1) ans=min(ans,max(0,-s[i].x-f[l-1]));
}
if(ans==1<<30) printf("-1");
else printf("%d",ans);
return 0;
}
【BZOJ4101】[Usaco2015 Open]Trapped in the Haybales Silver 二分的更多相关文章
- 【BZOJ4099】Trapped in the Haybales Gold STL
[BZOJ4099]Trapped in the Haybales Gold Description Farmer John has received a shipment of N large ha ...
- 【bzoj3886】[Usaco2015 Jan]Moovie Mooving 状态压缩dp+二分
题目描述 Bessie is out at the movies. Being mischievous as always, she has decided to hide from Farmer J ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- BZOJ-USACO被虐记
bzoj上的usaco题目还是很好的(我被虐的很惨. 有必要总结整理一下. 1592: [Usaco2008 Feb]Making the Grade 路面修整 一开始没有想到离散化.然后离散化之后就 ...
- SDWC补题计划
2018的寒假去了SD的冬令营,因为一班二班难度悬殊,对我很不友好,几乎什么也没学会,但是我把两个班的课件都存了下来,现在慢慢把两个班的例题以及课后题都补一补(毕竟冬令营的钱不能白花). 这些题目横跨 ...
- POJ 3662
Telephone Lines Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4591 Accepted: 1693 D ...
- POJ 3273
Monthly Expense Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 12122 Accepted: 4932 ...
- poj 3662 Telephone Lines(好题!!!二分搜索+dijkstra)
Description Farmer John wants to set up a telephone line at his farm. Unfortunately, the phone compa ...
- BZOJ——1620: [Usaco2008 Nov]Time Management 时间管理
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 920 Solved: 569[Submit][Status][Discuss] Description ...
随机推荐
- 篇三:XPath--解析Html
导语:爬虫爬取的界面,大致分为静态界面.ajax异步加载.动态界面.静态界面直接获取HTML对象,然后使用XPath获取值 最有用的路径表达式: 表达式 描述 nodename 选取此节点的所有子节点 ...
- 关于Cocos2d-x中根据分数增加游戏难度的方法
1.GameScene.h中声明一些分数边界值 //level提升所需的分数 enum LevelUp_Score { Level1Up_Score = , Level2Up_Score = , Le ...
- Docker之删除container和image
删除所有停止的container: docker rm $(docker ps -a -q) 删除所有未标记的image docker rmi $(docker images | grep " ...
- 【转】WCF入门教程一[什么是WCF]
一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...
- Checked Exception & Unchecked Exception
查Spring事务管理时看到一句话: Spring使用声明式事务处理,默认情况下,如果被注解的数据库操作方法中发生了unchecked异常,所有的数据库操作将rollback:如果发生的异常是chec ...
- e636. Listening to All Key Events Before Delivery to Focused Component
Registering a key event dispatcher with the keyboard focus manager allows you to see all key events ...
- (转)sqlite3使用中的常见问题
1. 创建数据如果不往数据库里面添加任何的表,这个数据库等于没有建立,不会在硬盘上产生任何文件,如果数据库已经存在,则会打开这个数据库. 2. 如何通过sqlite3.dll与sqlite3.def生 ...
- CentOS查看操作系统信息(重要)
1.查看物理CPU的个数 [root@MysqlCluster01 ~]# cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc ...
- 【Java NIO的深入研究1】缓冲区
缓冲区 传统的流和通道的对比 流 通道 慢 快 处理简单 处理复杂 单字节的传输 一块数据的传输 - Java.io.*已经重新写过 - 是对流的模拟 单向的 双向的 可直接访问 必须通过Buffer ...
- css属性cusor
<html> <body> <p>请把鼠标移动到单词上,可以看到鼠标指针发生变化:</p> <span style="cursor:au ...