hdu 5699 货物运输 (啥)

原创 2016年05月30日 20:45:22

http://acm.hdu.edu.cn/showproblem.php?pid=5699

中文题

二分答案,对每个区间可以求得x和y的范围,看有没有解

#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;


#define eps 1e-9
#define LL long long 
#define ULL unsigned long long
#define pii pair<int,int>
#define MP make_pair
#define N (2000000 + 10)
#define M (3000000 + 10)
#define inf 0x3f3f3f3f
#define ls i << 1
#define rs i<<1|1
#define lson ls, ll, md
#define rson rs, md+1, rr


int l[N], r[N];
int n, m;
bool check(int mid) {
    int mi1 = inf, mi2 = inf, ma1 = -inf, ma2 = -inf;
    bool e = 1;
    for(int i = 0; i < m; ++i) {
        if(r[i]-l[i] > mid) {
            ma1 = max(ma1, r[i]-l[i] - mid);
            mi1 = min(mi1, r[i]-l[i] + mid);
            mi2 = min(mi2, l[i]+r[i] + mid);
            ma2 = max(ma2, l[i]+r[i] - mid);
            e = 0;
        }
    }
    if(e) return 1;
    if(mi1 == ma1 && mi2 == ma2) {
        if((mi1 + mi2)&1) return 0;
    }
    return mi1 >= ma1 && mi2 >= ma2;
}

int main() {
    while(~scanf("%d%d", &n ,&m)) {
        for(int i = 0; i < m; ++i) {
            scanf("%d%d", &l[i], &r[i]);
            if(l[i] > r[i]) swap(l[i], r[i]);
        }

        int l = 0, r = n+1;
        int ans = 0 ;
        while(l < r) {
            int mid = l+r>>1;
            if(check(mid)) r = mid, ans = mid;
            else l = mid+1;
        }
        printf("%d\n",ans);
    }
}

相关文章推荐

HDU 5699 货物运输 (二分 + 不等式判断 好题)

HDU 5699 货物运输 (二分 + 不等式判断 好题)

2016暑期集训12C L国货物运输 HDU 5699 货物运输

L国货物运输【问题描述】 公元2222年,L国发生了一场战争。 小Y负责领导工人运输物资。 其中有m种物资的运输方案,每种运输方案形如li, ri。表示存在一种货物从li到ri。 这里有n个城...
  • ACZRZ
  • ACZRZ
  • 2016年08月21日 15:57
  • 184

NYOJ-931-货物运输【floyed+路径还原】

货物运输 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 S国有n个城市,从a城到b城运货的花费有两部分组成: (1)a城到b城的运输费 (2)途径城市的...

nyoj 931 货物运输(Floyd输出路径)

货物运输 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 S国有n个城市,从a城到b城运货的花费有两部分组成: (1)a城到b城的运输费...

hihocoder #1168 : 运输货物

这题挺考思维的。。。以出口为根,将树看成不同层,每次都是从下向上运输货物。。。。 #include #include #include #include #include #include...

【IndiaHacks 2016 - Online Edition (Div 1 + Div 2) ErrichtoD】【二分答案 最大流】Delivery Bears x只熊运输同样的实物重量货物

Delivery Bears time limit per test 2 seconds memory limit per test 256 megabytes in...

.Java多分支;if……else…… 每吨货物每公里运费P与运输距离S有关,路途越远,每公里运价越低。两种解决方案

每吨货物每公里运费P与运输距离S有关,路途越远,每公里运价越低。公式如下: p=10 s 8 100 7 150 6 200 5.5 300 5 s>=500 如果所付的总运费超过500...
  • KY1996
  • KY1996
  • 2017年07月15日 17:22
  • 354

hihocoder 1168 运输货物

题目大意:Z国有n个城市,编号为1, 2, …, n。城市间通过n – 1条道路相连,任意两个城市间有且仅有一条路径可以相互到达。每个城市都有一些货物,政府希望将所有的货物运送到港口城市s以便出口。由...

hihoCoder 1168 运输货物

#1168 : 运输货物 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 Z国有n个城市,编号为1, 2, …, n。城市间通过n – 1条道路相连,任...

货物管理系统(数据结构链式表)

/*货物管理系统(数据结构链式表)*/ #include #include #include #define MAXSIZE 100 typedef struct { char name[11...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu 5699 货物运输 (啥)
举报原因:
原因补充:

(最多只允许输入30个字)