POJ 2926 Requirements(多维最远曼哈顿距离)

原创 2013年12月04日 13:09:07

题目链接:http://poj.org/problem?id=2926

这个题目是看算法合集之《浅谈信息学竞赛中的“0”和“1”》后做的,二进制思想的经典应用

具体如下

(x1-x2) + (y1-y2), (x1-x2) + (y2-y1), (x2-x1) + (y1-y2), (x2-x1) + (y2-y1)

变形下:

(x1+y1) - (x2+y2), (x1-y1) - (x2-y2), (-x1+y1) - (-x2+y2), (-x1-y1) - (-x2-y2)

上面是二维的情况,多维也一样,我们只要枚举符号,一共5维就32种情况,选取

每种情况的最大值和最小值,最终就能求出最优解,复杂度接近O(n)

#include <string.h>
#include <algorithm>
#include <iostream>
#include <stdio.h>
using namespace std;
const double eps=1e12;
const int maxn = 101000;
double rec[maxn][5];
int n;
int main(){
    int i,j,k;
    double ans,now,MIN,MAX;
    while(scanf("%d",&n)!=EOF){
        for(i=0;i<n;i++)
        for(j=0;j<5;j++){
            scanf("%lf",&rec[i][j]);
        }
        ans=-eps;
        for(i=0;i<32;i++){
            MIN=eps,MAX=-eps;
            for(j=0;j<n;j++){
                now=0;
                for(k=0;k<5;k++){
                    if(i&(1<<k)) now+=rec[j][k];
                    else now-=rec[j][k];
                }
                MIN=min(MIN,now);
                MAX=max(MAX,now);
            }
            ans=max(ans,MAX-MIN);
        }
        printf("%.2lf\n",ans);
    }
    return 0;
}


相关文章推荐

HDU4666+POJ2926【最远曼哈顿距离】

一开始就明白那个N*1《k的算法了, 可无奈删除操作耗时还是太多,最后学习了STL set,map相应的用法,方便好多。 STL真的是一个好工具 #include #include #include ...

poj2926Requirements (曼哈顿距离)

Description An undergraduate student, realizing that he needs to do research to improve his cha...

hdu4666--Hyperspace--最远曼哈顿距离

Hyperspace Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Tot...

两种最远曼哈顿距离模板

第一种:没有删除 typedef double _int; struct Node { _int a[6], b[35]; } s[MAXN]; ///结构体保存每个点的维数坐标(a),处理...

HDU 4666 经典的求最远曼哈顿距离

求最远曼哈顿距离,对于一个n维的空间,其中两点的曼哈顿距离为:|x1-y1|+|x2-y2|+|x3-y3|+|x4-y4|+……+|xn-yn|      (两点的坐标分别为(x1,x2,……,xn...

HDU-4666 最远曼哈顿距离

题目连接 此题值得分析: 曼哈顿距离:两个点所对应的坐标差的绝对值之和。比如在一维空间:x1,x2.   d=|x1-x2|,二维空间:(x1,y1),(x2,y2)    d=|x1-x2|+|...

2013 多校第七场 hdu 4666 Hyperspace(最远曼哈顿距离)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=4666 题目大意:n个操作,d个维度,0表示加点,1表示删点,每次操作都要输出当前存在点的最长曼哈顿距离。 ...

poj 2926 Requirements(最大哈密顿距离,二进制)

Requirements Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 3998   Accepted: 135...
  • caduca
  • caduca
  • 2014年10月17日 16:17
  • 617

八数码问题 IDA*算法+曼哈顿距离 poj 1077

http://hi.baidu.com/wangz_j/blog/item/8dad3fcfbf31e41593457e51.htmlIDA*即迭代加深的A*搜索,实现代码是最简练的,无须状态判重,无...
  • nomad2
  • nomad2
  • 2011年06月22日 21:52
  • 3638

poj 3241 Object Clustering (曼哈顿距离最小生成树)

Object Clustering Time Limit: 2000MS   Memory Limit: 131072K Total Submissions: 1781...
  • whai362
  • whai362
  • 2015年10月10日 22:14
  • 248
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 2926 Requirements(多维最远曼哈顿距离)
举报原因:
原因补充:

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