Skip to content

Commit bfde1c4

Browse files
committedAug 31, 2014
poj 2926 ac
1 parent 3ac5899 commit bfde1c4

File tree

3 files changed

+31
-37
lines changed

3 files changed

+31
-37
lines changed
 

‎poj/volume-20/2926.cpp

Lines changed: 30 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,38 @@
11
#include <iostream>
2-
#include <math.h>
3-
#include <time.h>
42
#include <stdio.h>
5-
#include <stdlib.h>
3+
#include <string.h>
64

7-
using namespace std;
5+
const static int maxn = 100001 ;
86

9-
#define MAXN 100005
7+
using namespace std;
108

11-
int n ;
12-
double a[MAXN][5] ;
9+
int n;
10+
double x[maxn][5];
1311

1412
int main(){
15-
int x , y, check;
16-
double l , r , mid;
17-
scanf("%d", &n);
18-
srand(time(NULL));
19-
for(int i = 0 ; i < n ; ++ i){
20-
for(int j = 0 ; j < 5 ; ++ j)
21-
scanf("%lf", &a[i][j]);
22-
}
23-
l = 0.0 ; r = 1e20;
24-
for(int i = 0 ; i < 100 ; ++ i){
25-
mid = (l + r ) / 2.0;
26-
check = true;
27-
for(int k = 0 ; check && k < 100000 ; ++ k){
28-
x = rand() % n ;
29-
y = rand() % n ;
30-
double sum = 0 ;
31-
for(int j = 0 ; j < 5 ; ++j)
32-
sum += fabs(a[x][j] - a[y][j]);
33-
if(sum > mid){
34-
check = false;
35-
}
36-
}
37-
if(check){
38-
r = mid;
39-
}else{
40-
l = mid;
41-
}
42-
}
43-
printf("%0.2lf\n", mid);
44-
return 0;
13+
double maxv, minv, ans = 0 ;
14+
scanf("%d", &n );
15+
for(int i = 0 ; i < n ; ++ i){
16+
for(int j = 0 ; j < 5 ; ++ j)
17+
scanf("%lf", &x[i][j]);
18+
}
19+
ans = -1e100;
20+
for(int k = 0 ; k < (1<<5) ; ++ k){
21+
maxv = -1e100;
22+
minv = +1e100;
23+
for(int i = 0 ; i < n ; ++ i){
24+
double sumx = 0;
25+
for(int j = 0 ; j < 5 ; ++ j)
26+
if(k & (1<<j)){
27+
sumx = sumx + x[i][j];
28+
}else{
29+
sumx = sumx - x[i][j];
30+
}
31+
maxv = max(maxv, sumx);
32+
minv = min(minv, sumx);
33+
}
34+
ans = max(ans, maxv - minv);
35+
}
36+
printf("%0.2lf\n", ans);
37+
return 0 ;
4538
}

‎poj/volume-20/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* 2917 有`1/x+1/y=1/n`的解的个数。令`x=at,y=bt,t = gcd(x,y)`. 那么`n(a+b)=tab => n|a , n|b`。于是枚举n的因数即可。
44
* 2918 9*9数独 DFS搜索
55
* 2924 求sigma(i)(n<=i<=m)
6+
* 2926 在n(n<=100000)个五维向量中,找出两个向量,使得这两个向量的曼哈顿距离最大。`ans=sigma(|xi-yi|)(1<=i<=5)`共有32种去绝对值的方式,而ans又等于32种去绝对值方式中答案最大的那个。所以复杂度为`O(32*N)`.
67
* 2941 任选一个x[1..n]的排列,第i行选(i,x[i])这个数,假设所有这种排序数之和相等,称和谐矩阵。给定一个矩阵,判断是否是和谐的。我用的随机算法。也可以证明:和谐矩阵 <=> 所有的2*2的矩阵都是和谐矩阵。(数学归纳法)
78
* 2945 字符串Hash 或者 Trie树。 用STL的list写的hash表都TLE,还必须用搓逼的手写数组模拟哈希表。
89
* 2954 求一个三角形内部的整点数为多少?

‎poj/volume-20/a.out

-26 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)
Please sign in to comment.