bzoj4101[Usaco2015 Open]Trapped in the Haybales
来源:互联网 发布:淘宝改差评怎么改 编辑:程序博客网 时间:2024/06/16 14:32
分析:这题目难得一见的好题。。我怎么感觉到了#2题目都变难了一些。。
一开始硬是没搞清楚样例怎么算的。。然后突然看见题目中:贝西可以走到干草堆上。????woc蜜汁能走上去不能走过去?
。。然后才懂。。他的意思是贝西可以走到一个干草堆上然后向另外一个干草堆冲刺。。(有毒)
那么可以列个式子:假设只增加左边干草堆的大小,增加d,左边干草堆编号为i,右边为j
那么可以列式子:size[i]+d>=x[j]-x[i],这个比较明显了。然后移项,然后就会发现你要尽量增大size[i]+x[i],但是x[i]又不能太小,所以二分x[i]。
反过来也是一样的:size[i]+d>=x[i]-x[j]。
code:
#include<cstdio>#include<cstring>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;typedef long long ll;int n,m;const int N=1e5+5;struct node{ int s,x;}a[N];bool cmp(node x,node y){ return x.x<y.x;}int f[N];int main(){ int s; scanf("%d%d",&n,&s); fo(i,1,n) { scanf("%d%d",&a[i].s,&a[i].x); } a[++n].x=s; sort(a+1,a+1+n,cmp); fo(i,1,n) { if (a[i].x==s) { m=i; break; } } f[m]=-1<<30; int ans=1<<30; fd(i,m-1,1)f[i]=max(f[i+1],a[i].x+a[i].s);//size[i]+d>=x[j]-x[i] fo(i,m+1,n)f[i]=max(f[i-1],a[i].s-a[i].x);//size[i]+d>=x[i]-x[j] fo(i,m+1,n)//f[i]=size[i]+x[i],erfen:x[j]-d { int l=1,r=m; while(l<r) { int mid=(l+r)>>1; if (a[i].x-a[mid].x<=a[i].s)r=mid; else l=mid+1; } if (r<m)ans=min(ans,max(0,a[i].x-f[r])); } fo(i,1,m-1) { int l=m+1,r=n+1; while(l<r) { int mid=(l+r)>>1; if (a[mid].x-a[i].x<=a[i].s)l=mid+1; else r=mid; } if (l>m+1)ans=min(ans,max(0,-a[i].x-f[l-1])); } if (ans==1<<30)printf("-1"); else printf("%d",ans);}
0 0
- bzoj4101[Usaco2015 Open]Trapped in the Haybales
- bzoj4099【Usaco2015 Open】Trapped in the Haybales
- bzoj4099: [Usaco2015 Open]Trapped in the Haybales
- 4099: [Usaco2015 Open]Trapped in the Haybales 并查集+思路题
- 4099: [Usaco2015 Open]Trapped in the Haybales|并查集|乱搞
- 【Usaco2015 dec 】Counting Haybales
- bzoj4392【Usaco2015 Dec】Counting Haybales
- bzoj4102【Usaco2015 Open】Bessie
- bzoj4100【Usaco2015 Open】Bessie Goes Moo
- bzoj 4098 [Usaco2015 Open]Palindromic Paths
- bzoj 4100 [Usaco2015 Open]Bessie Goes Moo
- bzoj4098 [Usaco2015 Open]Palindromic Paths dp
- The open source project in China
- 右键添加open in the terminal
- My Open Mic in the openstack blog
- Show up in the "Open in..." menu on iOS
- bzoj4395【Usaco2015 Dec】Switching on the Lights
- BZOJ4392Counting Haybales
- python入门(一)
- 为什么做销售?
- Android 实战之酷云(一)
- 算法竞赛入门经典 第二版 习题5-9 找bug Bug Hunt uva1596
- 机器学习笔记(二) 线性模型
- bzoj4101[Usaco2015 Open]Trapped in the Haybales
- cocos2dx高级开发教程
- 基于二阶卡尔曼滤波的陀螺仪及加速度计信号融合的姿态角度测量
- Ubuntu根目录下各文件夹的作用
- Singleton 单例模式(懒汉方式和饿汉方式)
- 三月十日学习记录
- 基于android的Socket通信
- 解构 金蝶EAS 开发工具(2)
- Spring Data JPA 介绍和使用