您的位置:首页 > 产品设计 > UI/UE

poj2926 Requirements

2016-02-14 15:37 399 查看
题目很长 故事很短…..

求曼哈顿距离

5维的 其实几维的不重要 模版都是一样的

思考二维的 去掉绝对值分正负讨论 得出规律

符号使用二进制枚举

#include<cstdio>
typedef double d;
const d maxm=0x3f3f3f3f;
const d minm=-0x3f3f3f3f;
const int maxn=100005;
struct note{
d x[5];
}a[maxn];
d max(d aa,d bb){
return aa>bb?aa:bb;
}
d min(d aa,d bb){
return aa<bb?aa:bb;
}
d abs_(d aa){
if(aa<0.0)return -aa;
return aa;
}
int main(){
int n;
while(scanf("%d",&n)!=-1){
for(int i=0;i<n;i++){
scanf("%lf%lf%lf%lf%lf",&a[i].x[0],&a[i].x[1],&a[i].x[2],&a[i].x[3],&a[i].x[4]);
}
int const_=(1<<5);
d ans=minm;

for(int ii=0;ii<const_;ii++){
d max_=minm,min_=maxm;//一开始这个也在最上面  要求的是每次的max_  min_
for(int i=0;i<n;i++){//犯错误 一开始这层循环在最上面 当然是错了
d sum=0.0;
for(int j=0;j<5;j++){
if(ii>>j &1) //二进制枚举
sum+=a[i].x[j];
else sum-=a[i].x[j];
}
max_=max(max_,sum);
min_=min(min_,sum);
}
ans=max(ans,(max_-min_));//加不加abs其实效果一样 因为情况计算都是对立的
}
printf("%.2lf\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: