Chip Factory(传送门)
Time Limit : 18000/9000ms (Java/Other) Memory Limit : 262144/262144K (Java/Other)
Total Submission(s) : 23 Accepted Submission(s) : 14
Problem Description
John is a manager of a CPU chip factory, the factory produces lots of chips everyday. To manage large amounts of products, every processor has a serial number. More specifically, the factory produces
n
chips today, the
At the end of the day, he packages all the chips produced this day, and send it to wholesalers. More specially, he writes a checksum number on the package, this checksum is defined as below:
which i,j,k are three different integers between 1 and
Can you help John calculate the checksum number of today?
Input
The first line of input contains an integer
T
indicating the total number of test cases. The first line of each test case is an integer
Output
For each test case, please output an integer indicating the checksum number in a line.
Sample Input
2
3
1 2 3
3
100 200 300
Sample Output
6
400
Source
2015ACM/ICPC亚洲区长春站-重现赛(感谢东北师大)
题意
如题目所说,求解 maxi,j,k(si+sj)⊕sk 的值.
解题思路
不知道题目是怎么玩的,直接三个 for 循环就可以通过,尴尬!
代码
时间复杂度: O(n3)
/*除去冗长的头文件*/
const double PI = 3.1415926535898;
const double eps = 1e-10;
const int MAXM = 1e5 + 5;
const int MAXN = 1e3 + 5;
const int INF = 0x3f3f3f3f;
int T, n;
LL A[MAXN];
int main() {
#ifndef ONLINE_JUDGE
//FIN;
//FOUT;
#endif
IO_Init();
scanf("%d", &T);
while(T --) {
scanf("%d", &n);
LL Max = 0;
for(int i = 0; i < n; i ++) {
scanf("%lld", &A[i]);
}
for(int i = 0; i < n; i ++) {
for(int j = i + 1 ; j < n; j ++) {
for(int k = j + 1; k < n; k ++) {
Max = max(Max, (A[i] + A[j]) ^ A[k]);
Max = max(Max, (A[i] + A[k]) ^ A[j]);
Max = max(Max, (A[k] + A[j]) ^ A[i]);
}
}
}
printf("%lld\n", Max);
}
return 0;
}