HDU 5699 货物运输
来源:互联网 发布:现在还有网络聊天室吗 编辑:程序博客网 时间:2024/05/01 18:39
题目连接:点击打开链接
使得运输方案的最长时间最小,很明显有二分的性质,然而此题的问题在于如何检测所有的运输时间都小于给定值mid
假设传送点在x和y上(x<y),那么每个运输方案的时间为min(ri-li, |li-x|+|ri-y|)
如果ri-li<=mid就直接可行,否则要判断 |li-x|+|ri-y|是否小于mid
但是这个不是很好看出怎么判断,我们不妨把(li,ri)都当成平面上的点,那么|li-x|+|ri-y|就相当于(x,y)到(li,ri)的哈密顿距离,于是问题就变成
是否存在一个位置,使得距离所有的点的哈密顿距离都不超过mid
可以画张图
判断一下需要覆盖的范围能不能被能覆盖的范围完全覆盖到即可,这就简单多了
下面代码
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <string>#include <iostream>#include <algorithm>#include <set>#include <vector>#include <queue>#include <map>#define fi first#define se secondusing namespace std;typedef long long ll;typedef pair<int, int> PII;const int inf = 0x3fffffff;const int maxn=1000000;PII a[maxn+10];int n,m;bool check(int mid){int mn1,mn2,mx1,mx2;mn1=mn2=inf; mx1=mx2=-inf;for (int i = 0; i < m; ++i){if(a[i].se-a[i].fi<=mid) continue;mn1=min(mn1,a[i].fi+a[i].se);mx1=max(mx1,a[i].fi+a[i].se);mn2=min(mn2,a[i].fi-a[i].se);mx2=max(mx2,a[i].fi-a[i].se);}if(mx1==-inf) return true;else if(mx1-mn1>2*mid || mx2-mn2>2*mid) return false;else return true;}int main() {#ifndef ONLINE_JUDGE freopen("test.in", "r", stdin);#endif while(~scanf("%d%d",&n,&m)){ //printf("Case #%d:\n",cas); for (int i = 0; i < m; ++i) { scanf("%d%d",&a[i].fi, &a[i].se); if(a[i].fi>a[i].se) swap(a[i].fi,a[i].se); } int l=-1, r=maxn; while(r-l>1){ int mid=(l+r)/2; if(check(mid)) r=mid; else l=mid; } printf("%d\n",r); } return 0;}
0 0
- HDU 5699 货物运输
- HDU 5699 货物运输
- HDU 5699 货物运输
- HDU 5699 货物运输
- Hdu 5699 货物运输
- hdu 5699 货物运输 (啥)
- HDU 5699 货物运输 ( 二分 + 不等式判断 )
- HDU 5699 货物运输 (二分 + 不等式判断 好题)
- 货物运输
- 2016暑期集训12C L国货物运输 HDU 5699货物运输
- 【HDOJ】【百度之星】5699 货物运输
- hdu5699货物运输
- Jzoj4789 货物运输
- [BZOJ1003][ZJOI2006]货物运输
- hdu5699 货物运输(二分)
- 51Nod-1671-货物运输
- HDU5699货物运输 (二分+不等式判断)
- NYOJ-931-货物运输【floyed+路径还原】
- 学习java中的单例模式(Singleton)
- TCP慢启动、拥塞控制、快速重传、快速恢复
- Core Data的使用
- Observer pattern
- Tomcat 服务器 Session的实现
- HDU 5699 货物运输
- 将一个正整数分解质因数
- Oracle、PostgreSQL、Sybase数据库导入导出
- VLC学习(1)—— window下SDK使用
- 高级I/O-----dup/dup2
- pull解析
- Spring事务的隔离级别
- 高版本ubuntu安装低版本arm-linux-gcc
- JSTL