poj 2926 Requirements N维最远曼哈顿距离
来源:互联网 发布:网络 全球 编辑:程序博客网 时间:2024/04/30 03:41
以前写过1~3维的最远曼哈顿距离,(本博客第一篇,代码奇丑)这次写N维,可作模版。
复杂度:O(n*2^m) (n个点,m维)
原理: |x1-y1|+|x2-y2|+... ...+|xm-ym| 去掉绝对值后x、y分别都有2^m种状态,枚举之。
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const int dem=5; //维数const int maxxn=100005;const double inf=1e200;struct Point{ double x[dem];}p[maxxn];int n;double minx[1<<dem], maxx[1<<dem];double solve(){ int i, j, k, t, tmp=1<<dem; double s, ans=-inf; for(i=0; i<tmp; i++){ minx[i]=inf; maxx[i]=-inf; } for(i=0; i<n; i++){ for(j=0; j<tmp; j++){ t=j;s=0; for(k=0; k<dem; k++){ if(t&1) s+=p[i].x[k]; else s-=p[i].x[k]; t>>=1; } if(maxx[j]<s)maxx[j]=s; if(minx[j]>s)minx[j]=s; } } for(i=0; i<tmp; i++){ if(maxx[i]-minx[i]>ans) ans=maxx[i]-minx[i]; } return ans;}int main(){ //freopen("1.txt", "r", stdin); int i, j; while(scanf("%d", &n)!=EOF){ for(i=0; i<n; i++){ for(j=0; j<dem; j++) scanf("%lf", &p[i].x[j]); } printf("%.2f\n", solve()); } return 0;}
- poj 2926 Requirements N维最远曼哈顿距离
- POJ 2926 Requirements【最远曼哈顿距离】
- [poj 2926]Requirements[最远曼哈顿距离]
- 最远曼哈顿距离小结 poj 2926 Requirements&hdu 4666 Hyperspace
- 最远曼哈顿距离小结 poj 2926 Requirements&hdu 4666 Hyperspace
- POJ 2926 Requirements(多维最远曼哈顿距离)
- POJ 2926 Requirements (多维最远曼哈顿距离)
- poj 2926 Requirements 【5维点集最远曼哈顿距离】
- POJ 2926 Requirements (空间最远曼哈顿距离)
- ]Requirements[最远曼哈顿距离]
- poj 2926 Requirements (曼哈顿距离)
- zoj2688 Requirements 曼哈顿距离
- 最远(近)曼哈顿距离
- 最远曼哈顿距离
- 【最大曼哈顿距离】POJ2926 Requirements
- HDU4666+POJ2926【最远曼哈顿距离】
- HDU-4666 最远曼哈顿距离
- hdu4666--Hyperspace--最远曼哈顿距离
- 5.23
- GDI资源泄漏导致的程序异常的解析
- SetAcl2.3.0注册表、文件权限设置工具
- TCP学习心得及局部类访问本地变量问题
- php/6
- poj 2926 Requirements N维最远曼哈顿距离
- 金山毒霸喜新厌旧 推荐QQ电脑管家抛弃金山卫士?
- JavaEE介绍
- mmap
- 期待已久的暗黑3
- js 设计模式学习--观察者模式
- 8086/8088汇编指令系统剖析(一)
- CXF配制怕以后忘了
- Linux输入子系统分析(六)