poj2926 曼哈顿最远距离
题目链接:http://poj.org/problem?id=2926
#include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> #include<queue> #include<vector> using namespace std; const int INF = 0x3f3f3f; float Max[32]; //Max[i]表示第i种的最大; float Min[32]; int N; int main() { //freopen("E:\\acm\\input.txt","r",stdin); cin>>N; for(int i=0;i<32;i++){ Max[i] = -INF; Min[i] = INF; } while(N--){ float a[6]; scanf("%lf %lf %lf %lf %lf",&a[0],&a[1],&a[2],&a[3],&a[4]); for(int i=0;i<32;i++){ float add = 0; for(int j=0;j<=4;j++) if(1<<j & i) add += a[j]; else add -= a[j]; Max[i] = max(Max[i],add); Min[i] = min(Min[i],add); } } float ans = 0; for(int i=0;i<32;i++){ ans = max(ans,Max[i]-Min[i]); } printf("%.2f\n",ans); return 0; }