poj 2926:Requirements(最远曼哈顿距离,入门题)
| Time Limit: 5000MS | Memory Limit: 65536K | |
| Total Submissions: 3908 | Accepted: 1318 |
Description
An undergraduate student, realizing that he needs to do research to improve his chances of being accepted to graduate school, decided that it is now time to do some independent research. Of course, he has decided to do research in the most important domain: the requirements he must fulfill to graduate from his undergraduate university. First, he discovered (to his surprise) that he has to fulfill 5 distinct requirements: the general institute requirement, the writing requirement, the science requirement, the foreign-language requirement, and the field-of-specialization requirement. Formally, a requirement is a fixed number of classes that he has to take during his undergraduate years. Thus, for example, the foreign language requirement specifies that the student has to take 4 classes to fulfill this requirement: French I, French II, French III, and French IV. Having analyzed the immense multitude of the classes that need to be taken to fulfill the different requirements, our student became a little depressed about his undergraduate university: there are so many classes to take…
Dejected, the student began studying the requirements of other universities that he might have chosen after high school. He found that, in fact, other universities had exactly the same 5 requirements as his own university. The only difference was that different universities had different number of classes to be satisfied in each of the five requirement.
Still, it appeared that universities have pretty similar requirements (all of them require a lot of classes), so he hypothesized that no two universities are very dissimilar in their requirements. He defined the dissimilarity of two universities Xand Y as |x1 − y1| + |x2 − y2| + |x3 − y3| + |x4 − y4| + |x5 − y5|, where an xi (yi) is the number of classes in the requirement i of university X (Y) multiplied by an appropriate factor that measures hardness of the corresponding requirement at the corresponding university.
Input
The first line of the input file contains an integer N (1 ≤ N ≤ 100 000), the number of considered universities. The following N lines each describe the requirements of a university. A university X is described by the five non-negative real numbers x1 x2 x3 x4 x5.
Output
On a single line, print the dissimilarity value of the two most dissimilar universities. Your answer should be rounded to exactly two decimal places.
Sample Input
3
2 5 6 2 1.5
1.2 3 2 5 4
7 5 3 2 5
Sample Output
12.80
Source
#define inf 1e200
double a[][]; //每一个点的5个坐标值
double GetManhattan(double p[][],int n,int dem)
{
double ans = ,Min,Max;
int i,j,k;
for(i=;i<(<<(dem-1));i++){ //用二进制形式遍历所有可能的运算情况
Min = inf,Max = -inf;
for(j=;j<n;j++){ //遍历每一个点
double sum = ;
for(k=;k<;k++){ //因为是五维的,所以有4个运算符
//提取当前运算符
int t = i & <<k; //1为+,0为-
if(t) sum+=p[j][k];
else sum-=p[j][k];
}
if(sum>Max) Max = sum;
if(sum<Min) Min = sum;
}
if(Max-Min>ans)
ans = Max - Min;
}
return ans;
}
#include<iostream>
#include<stdio.h>
#include<iomanip>
const double MAX=1e100;
const double MIN=-1e100;
using namespace std;
int n;
double fivemaxdistance() //三维点集最大曼哈顿距离
{
double max1=MIN,min1=MAX,max2=MIN,min2=MAX,max3=MIN,min3=MAX,max4=MIN,min4=MAX,
max5=MIN,min5=MAX,
max6=MIN,min6=MAX,
max7=MIN,min7=MAX,
max8=MIN,min8=MAX,
max9=MIN,min9=MAX,
max10=MIN,min10=MAX,
max11=MIN,min11=MAX,
max12=MIN,min12=MAX,
max13=MIN,min13=MAX,
max14=MIN,min14=MAX,
max15=MIN,min15=MAX,
max16=MIN,min16=MAX,x,y,z,k,l,ans;
for(int i=;i<=n;++i)
{
scanf("%lf%lf%lf%lf%lf",&x,&y,&z,&k,&l);
if(x+y+z+k+l>max1) max1=x+y+z+k+l;
if(x+y+z+k+l<min1) min1=x+y+z+k+l;
if(x-y+z+k+l>max2) max2=x-y+z+k+l;
if(x-y+z+k+l<min2) min2=x-y+z+k+l;
if(x+y-z+k+l>max3) max3=x+y-z+k+l;
if(x+y-z+k+l<min3) min3=x+y-z+k+l;
if(x+y+z-k+l>max4) max4=x+y+z-k+l;
if(x+y+z-k+l<min4) min4=x+y+z-k+l;
if(x+y+z+k-l>max5) max5=x+y+z+k-l;
if(x+y+z+k-l<min5) min5=x+y+z+k-l;
if(x-y-z+k+l>max6) max6=x-y-z+k+l;
if(x-y-z+k+l<min6) min6=x-y-z+k+l;
if(x-y+z-k+l>max7) max7=x-y+z-k+l;
if(x-y+z-k+l<min7) min7=x-y+z-k+l;
if(x-y+z+k-l>max8) max8=x-y+z+k-l;
if(x-y+z+k-l<min8) min8=x-y+z+k-l;
if(x+y-z-k+l>max9) max9=x+y-z-k+l;
if(x+y-z-k+l<min9) min9=x+y-z-k+l;
if(x+y-z+k-l>max10) max10=x+y-z+k-l;
if(x+y-z+k-l<min10) min10=x+y-z+k-l;
if(x+y+z-k-l>max11) max11=x+y+z-k-l;
if(x+y+z-k-l<min11) min11=x+y+z-k-l;
if(x-y-z-k+l>max12) max12=x-y-z-k+l;
if(x-y-z-k+l<min12) min12=x-y-z-k+l;
if(x+y-z-k-l>max13) max13=x+y-z-k-l;
if(x+y-z-k-l<min13) min13=x+y-z-k-l;
if(x-y+z-k-l>max14) max14=x-y+z-k-l;
if(x-y+z-k-l<min14) min14=x-y+z-k-l;
if(x-y-z+k-l>max15) max15=x-y-z+k-l;
if(x-y-z+k-l<min15) min15=x-y-z+k-l;
if(x-y-z-k-l>max16) max16=x-y-z-k-l;
if(x-y-z-k-l<min16) min16=x-y-z-k-l;
}
ans=max1-min1;
if(max2-min2>ans) ans=max2-min2;
if(max3-min3>ans) ans=max3-min3;
if(max4-min4>ans) ans=max4-min4;
if(max5-min5>ans) ans=max5-min5;
if(max6-min6>ans) ans=max6-min6;
if(max7-min7>ans) ans=max7-min7;
if(max8-min8>ans) ans=max8-min8;
if(max9-min9>ans) ans=max9-min9;
if(max10-min10>ans) ans=max10-min10;
if(max11-min11>ans) ans=max11-min11;
if(max12-min12>ans) ans=max12-min12;
if(max13-min13>ans) ans=max13-min13;
if(max14-min14>ans) ans=max14-min14;
if(max15-min15>ans) ans=max15-min15;
if(max16-min16>ans) ans=max16-min16;
return ans;
}
int main()
{
while(cin>>n)
{ //输入点数
cout<<setiosflags(ios::fixed)<<setprecision();
cout<<fivemaxdistance()<<endl;
}
return ;
}
优化方法(用二进制方法遍历运算符):
#include <iostream>
#include <iomanip>
#include <stdio.h>
using namespace std; #define inf 1e200
double a[][]; //每一个点的5个坐标值
double GetManhattan(double p[][],int n,int dem)
{
double ans = ,Min,Max;
int i,j,k;
for(i=;i<(<<(dem-1));i++){ //用二进制形式遍历所有可能的运算情况
Min = inf,Max = -inf;
for(j=;j<n;j++){ //遍历每一个点
double sum = ;
for(k=;k<;k++){ //因为是五维的,所以有4个运算符
//提取当前运算符
int t = i & <<k; //1为+,0为-
if(t) sum+=p[j][k];
else sum-=p[j][k];
}
if(sum>Max) Max = sum;
if(sum<Min) Min = sum;
}
if(Max-Min>ans)
ans = Max - Min;
}
return ans;
}
int main()
{
int i,j,n;
while(cin>>n){
for(i=;i<n;i++) //输入n个点
for(j=;j<;j++)
scanf("%lf",&a[i][j]);
//计算最短曼哈顿距离
cout<<setiosflags(ios::fixed)<<setprecision();
cout<<GetManhattan(a,n,)<<endl;
}
return ;
}
Freecode : www.cnblogs.com/yym2013
poj 2926:Requirements(最远曼哈顿距离,入门题)的更多相关文章
- POJ-2926 Requirements 最远曼哈顿距离
题目链接:http://poj.org/problem?id=2926 题意:求5维空间的点集中的最远曼哈顿距离.. 降维处理,推荐2009武森<浅谈信息学竞赛中的“0”和“1”>以及&l ...
- hdu 4666:Hyperspace(最远曼哈顿距离 + STL使用)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- HDU 4666 Hyperspace (最远曼哈顿距离)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- poj 2926 Requirements
点击打开poj 2926 思路: n维空间计算最远的曼哈顿距离 分析: 1 题目给定n个5维的点,要求最远的曼哈顿距离 2 求最远曼哈顿距离,对于一个n维的空间,其中两点的曼哈顿距离为:|x1-x2| ...
- HDU 4666 Hyperspace (2013多校7 1001题 最远曼哈顿距离)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- 【POJ 3241】Object Clustering 曼哈顿距离最小生成树
http://poj.org/problem?id=3241 曼哈顿距离最小生成树模板题. 核心思想是把坐标系转3次,以及以横坐标为第一关键字,纵坐标为第二关键字排序后,从后往前扫.扫完一个点就把它插 ...
- [HDU 4666]Hyperspace[最远曼哈顿距离][STL]
题意: 许多 k 维点, 求这些点之间的最远曼哈顿距离. 并且有 q 次操作, 插入一个点或者删除一个点. 每次操作之后均输出结果. 思路: 用"疑似绝对值"的思想, 维护每种状态 ...
- HDU 4666 最远曼哈顿距离
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4666 关于最远曼哈顿距离的介绍: http://blog.csdn.net/taozifish/ar ...
- 2018 Multi-University Training Contest 10 CSGO(HDU - 6435)(最远曼哈顿距离)
有 n 种主武器,m 种副武器.每种武器有一个基础分数k种属性值 X[i] . 选出一种主武器 mw 和一种副武器 sw,使得两种武器的分数和 + 每个属性的差值尽量大.(参考下面的式子) 多维的最远 ...
随机推荐
- css3应用之自定义选中文字的背景颜色
在看很多的博客主题时候发现大多数都对选中文字的背景颜色做了相应的处理.其实这样是很符合用户体验的.因为有很多的人会用鼠标选择着一行一行的阅读.其中就包括本人... 浏览器中默认的选中的文字颜色为白色, ...
- mysql集群实例
原文地址:http://www.it165.net/database/html/201403/5678.html http://www.cnblogs.com/seesea125/archive/20 ...
- ASP.NET MVC 开启AJAX跨域请求
<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Contro ...
- 面向对象分析设计-------02UML+UML各种图形及作用
一.UML是什么?UML有什么用? 二.UML的历史 三.UML的上层结构(Superstructure) 四.UML建模工具 五.UML的图(重点) 1.用例图(use case diagram) ...
- httpd/php/mysql的安装-1
rely: 依赖: relier, reliance , reliable : i don't think he is a reliable man . we must lay stress on ...
- C#集合接口的继承关系图
- 域名在微信朋友圈内分享需要ICP备案 杜绝不良信息传播
就在刚刚,腾讯微信团队发布公告表示域名在朋友圈内分享需要ICP备案,杜绝打击不良互联网信息的传播.公告称根据互联网管理相关规定,即日起在微信朋友圈内分享的域名,请在2014年12月31日前完成ICP备 ...
- cocos基础教程(11)事件分发机制
cocos3.0的事件分发机制: 创建一个事件监听器-用来实现各种触发后的逻辑. 事件监听器添加到事件分发器_eventDispatcher,所有事件监听器有这个分发器统一管理. 事件监听器有以下几种 ...
- 淘宝(阿里百川)手机客户端开发日记第五篇 SharedPreferences使用详解
我们知道,Android中数据存储技术由于如下几种 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 ...
- [BZOJ1998][Hnoi2010]Fsk物品调度
[BZOJ1998][Hnoi2010]Fsk物品调度 试题描述 现在找工作不容易,Lostmonkey费了好大劲才得到fsk公司基层流水线操作员的职位.流水线上有n个位置,从0到n-1依次编号,一开 ...