poj 2926 Requirements
思路: n维空间计算最远的曼哈顿距离
分析:
1 题目给定n个5维的点,要求最远的曼哈顿距离
2 求最远曼哈顿距离,对于一个n维的空间,其中两点的曼哈顿距离为:|x1-x2|+|y1-y2|+... , 两点的坐标分别为(x1,y1……)和(x2,y2,……)
3 考虑二维的情况
对于二维空间的两个点(x1,y1)和 (x2,y2),那么曼哈顿距离为|x1-x2|+|y1-y2|
那么我们去掉绝对值之后就有四种情况(x1-x2)+(y1-y2) , -(x1-x2)+(y1-y2) ,(x1-x2)-(y1-y2) ,-(x1-x2)-(y1-y2)
那么我们把相同点的放在一起变形一下得到(x1+y1)-(x2+y2) ,(-x1+y1)-(-x2+y2) ,(x1-y1)-(x2-y2) , (-x1-y1)-(-x2-y2)
那么很明显我们只要去求出4种组合方式的最大和最小值,然后求最大的(最大值-最小值)
4 对于n维的空间来说这个结论也是正确的,n维的话就有2^n种状态,我们只要去枚举n个点然后求每一种状态的最大值和最小值,然后求最大的(最大值-最小值)
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; const int N = 5;
const int INF = 1<<30;
const int MAXN = 100010; struct Node{
double p[N];
};
Node node[MAXN]; int n;
double maxNum[MAXN];
double minNum[MAXN]; void init(){
for(int i = 0 ; i < (1<<N) ; i++){
maxNum[i] = -INF;
minNum[i] = INF;
}
} double solve(){
init();
double ans = 0;
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < (1<<5) ; j++){
int s = j;
double sum = 0;
for(int k = 0 ; k < 5 ; k++){
if(s&(1<<k))
sum += node[i].p[k];
else
sum -= node[i].p[k];
}
maxNum[j] = max(maxNum[j] , sum);
minNum[j] = min(minNum[j] , sum);
}
}
for(int i = 0 ; i < (1<<N) ; i++)
ans = max(ans , maxNum[i]-minNum[i]);
return ans;
} int main(){
while(scanf("%d" , &n) != EOF){
for(int i = 0 ; i < n ; i++)
for(int j = 0 ; j < N ; j++)
scanf("%lf" , &node[i].p[j]);
printf("%.2lf\n" , solve());
}
return 0;
}
poj 2926 Requirements的更多相关文章
- poj 2926:Requirements(最远曼哈顿距离,入门题)
Requirements Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 3908 Accepted: 1318 Desc ...
- 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 ...
- HDU 4666 Hyperspace (2013多校7 1001题 最远曼哈顿距离)
Hyperspace Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- 计算几何--求凸包模板--Graham算法--poj 1113
Wall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 28157 Accepted: 9401 Description ...
- poj 1113:Wall(计算几何,求凸包周长)
Wall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 28462 Accepted: 9498 Description ...
- 【POJ】1113 Wall(凸包)
http://poj.org/problem?id=1113 答案是凸包周长+半径为l的圆的周长... 证明?这是个坑.. #include <cstdio> #include <c ...
- Poj(2771),最大独立集
题目链接:http://poj.org/problem?id=2771 Guardian of Decency Time Limit: 3000MS Memory Limit: 65536K To ...
- POJ-2926 Requirements 最远曼哈顿距离
题目链接:http://poj.org/problem?id=2926 题意:求5维空间的点集中的最远曼哈顿距离.. 降维处理,推荐2009武森<浅谈信息学竞赛中的“0”和“1”>以及&l ...
随机推荐
- frameset标签代码实现网站跳转
js代码1: document.writeln("<frameset rows=\"0, *\">"); document.writeln(&quo ...
- Ext.String 方法
1.Ext.String.htmlEncode(value); 编码字符串,对其中特殊字符进行转义 xt.String.htmlEncode("hello'world"); //& ...
- 数据库基本概念-oracle介绍
甲骨文公司,全称甲骨文股份有限公司是全球最大的企业软件公司,总部位于美国加利福尼亚州的红木滩.甲骨文是继Microsoft及IBM后,全球收入第三多的软件公司.甲骨文公司1989年正式进入中国市场.重 ...
- 从string.size()和string.length()聊到长度的问题和一个关于数据结构定义的技巧
最近工作中要查看一下string的长度,然后忘了是哪个函数,所以去网上搜了一搜,决定把网上学的和其他的一些有关长度的东西在这里汇总一下, 然后就有了此帖. string 是从c语言的char数组的概念 ...
- dp 0-1背包问题
0-1背包的状态转换方程 f[i,j] = Max{ f[i-1,j-Wi]+Pi( j >= Wi ), f[i-1,j] } f[i,j]表示在前i件物品中选择若干件放在承重为 j 的背包 ...
- Sharepoint 问题集锦 - 配置
错误 在sharepoint designer中编辑List的表单的时候,提示soap:Server服务器无法处理请求. ---> 值不在预期的范围内. 解释: 这个是由于我在本地测试的时候,使 ...
- matlab常用小函数(一)
(第1维为对每一列操作,第2维维对每一行操作) sum 求和操作 max 求最大值操作 sum:求和操作 sum(A):矩阵A按列向求和(每一列求和),结果为一个行向量 sum(A,2):矩阵A按行向 ...
- LeetCode(4) || Longest Palindromic Substring 与 Manacher 线性算法
LeetCode(4) || Longest Palindromic Substring 与 Manacher 线性算法 题记 本文是LeetCode题库的第五题,没想到做这些题的速度会这么慢,工作之 ...
- Hadoop 学习笔记 (十) MapReduce实现排序 全局变量
一些疑问:1 全排序的话,最后的应该sortJob.setNumReduceTasks(1);2 如果多个reduce task都去修改 一个静态的 IntWritable ,IntWritable会 ...
- 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法一网打尽
字符串模式匹配算法——BM.Horspool.Sunday.KMP.KR.AC算法一网打尽 本文内容框架: §1 Boyer-Moore算法 §2 Horspool算法 §3 Sunday算法 §4 ...