HDU 5626 Clarke and points(二进制枚举)
来源:互联网 发布:php网店源码 编辑:程序博客网 时间:2024/06/01 19:43
题意:
求N≤106个点中,任意2点间的最大曼哈顿距离
分析:
|xi−xj|+|yi−yj|,拆绝对值可以得到:
正正:xi−xj+yi−yj=(xi+yi)−(xj+yj)
负负:−xi+xj−yi+yj=(−xi−yi)−(−xj−yj)
正负:xi−xj−yi+yj=(xi−yi)−(xj−yj)
负正:−xi+xj+yi−yj=(−xi+yi)−(−xj+yj)
所以只要维护最大值和最小值就可以了,至于符号可以用二进制枚举
时间复杂度O(22∗2∗n)
代码:
//// Created by TaoSama on 2016-02-13// Copyright (c) 2016 TaoSama. All rights reserved.//#pragma comment(linker, "/STACK:1024000000,1024000000")#include <algorithm>#include <cctype>#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <iomanip>#include <iostream>#include <map>#include <queue>#include <string>#include <set>#include <vector>using namespace std;#define pr(x) cout << #x << " = " << x << " "#define prln(x) cout << #x << " = " << x << endlconst int N = 1e6 + 10, INF = 0x3f3f3f3f, MOD = 1e9 + 7;typedef long long LL;int n;long long seed, p[N][2];inline long long rand(long long l, long long r) { static long long mo = 1e9 + 7, g = 78125; return l + ((seed *= g) %= mo) % (r - l + 1);}int main() {#ifdef LOCAL freopen("C:\\Users\\TaoSama\\Desktop\\in.txt", "r", stdin);// freopen("C:\\Users\\TaoSama\\Desktop\\out.txt","w",stdout);#endif ios_base::sync_with_stdio(0); int t; scanf("%d", &t); while(t--) { scanf("%d%I64d", &n, &seed); for(int i = 1; i <= n; ++i) { p[i][0] = rand(-1000000000, 1000000000); p[i][1] = rand(-1000000000, 1000000000); } LL ans = 0; for(int s = 0; s < 1 << 2; ++s) { LL minv = 1e18, maxv = -1e18; for(int i = 1; i <= n; ++i) { LL cur = 0; for(int j = 0; j < 2; ++j) if(s >> j & 1) cur += p[i][j]; else cur -= p[i][j]; minv = min(minv, cur); maxv = max(maxv, cur); } ans = max(ans, maxv - minv); } printf("%I64d\n", ans); } return 0;}
0 0
- HDU 5626 Clarke and points(二进制枚举)
- HDU 5626 Clarke and points
- HDU 5626 Clarke and points
- HDU 5626 Clarke and points
- hdu 5626 Clarke and points
- HDU Clarke and points
- HDU 5626 Clarke and points(最大曼哈顿距离)
- 杭电hdu 5626 Clarke and points【思维】
- hdu 5626 Clarke and points 最大曼哈顿距离
- HDU 5626 Clarke and points 求平面最远哈曼顿距离
- hdoj Clarke and points 5626 (数学&变换)
- hdoj 5626 Clarke and points 【思维】
- hdoj 5626 Clarke and points (曼哈顿距离)
- HDU5626 Clarke and points
- bestcoder #72Clarke and points
- hdoj--5625--Clarke and chemistry(枚举)
- HDU 5627 Clarke and MST &高位枚举+并查集
- HDU 5469 Clarke and problem (DP)
- python、nodejs和java性能对比
- Educational Codeforces Round 7 CF622C Not Equal on a Segment
- 数据库操作
- 数据库中约束与修改
- 面试笔试杂项积累-leetcode 261-270
- HDU 5626 Clarke and points(二进制枚举)
- 数据库恢复和备份、jdbc(java)
- android:Activity四种启动模式简介
- PAT_乙级1005
- php-fpm添加service服务
- [MyBatis日记](3)映射器配置文件与映射器接口
- 数据库知识自我检测(题目)
- 静态区间第k大(划分树)
- Windows多线程探究