描述

给定N个数A1, A2, A3, ... AN,小Ho想从中找到两个数Ai和Aj(i ≠ j)使得乘积Ai × Aj × (Ai AND Aj)最大。其中AND是按位与操作。

小Ho当然知道怎么做。现在他想把这个问题交给你。

输入

第一行一个数T,表示数据组数。(1 <= T <= 10)

对于每一组数据:

第一行一个整数N(1<=N<=100,000)

第二行N个整数A1, A2, A3, ... A(0 <= A<220)

输出

一个数表示答案

样例输入

2
3
1 2 3
4
1 2 4 5

样例输出

12
80

思路:Ai*Aj*(Ai&Aj)我们枚举第三部分,假设第三部分为x=Ai&Aj,然后我们取x的超集的最大值和次大值即可。

对于每个Ai我们可以枚举子集,用Ai取更新子集的最大次大值。4777ms;

#include<bits/stdc++.h>
using namespace std;
const int maxn=(<<)+;
int Mx[maxn],Se[maxn]; long long ans;
int main()
{
int T,N,x;
scanf("%d",&T);
while(T--){
memset(Mx,,sizeof(Mx));
memset(Se,,sizeof(Se));
scanf("%d",&N);
for(int i=;i<=N;i++){
scanf("%d",&x);
for(int j=x;j;j=(j-)&x){
if(x>Mx[j]){
Se[j]=Mx[j]; Mx[j]=x;
}
else if(x>Se[j]) Se[j]=x;
}
}
ans=;
for(int i=;i<maxn;i++) ans=max(ans,(long long)i*Mx[i]*Se[i]);
printf("%lld\n",ans);
}
return ;
}

也可以利用高维前缀和来维护最大次大值。1586ms。

(目前见到的三种:高维前缀和维护了X集之和,位置的最小值,最大次大值。ORZ

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=<<;
int Mx[maxn+],Se[maxn+]; ll ans;
int main()
{
int T,N,x;
scanf("%d",&T);
while(T--){
memset(Mx,,sizeof(Mx));
memset(Se,,sizeof(Se));
scanf("%d",&N);
for(int i=;i<=N;i++){
scanf("%d",&x);
if(x>Mx[x]) Mx[x]=x;
else Se[x]=x;
}
for(int i=;i<;i++){
for(int j=;j<maxn;j++){
if(!(j&(<<i))){
if(Mx[j|(<<i)]>=Mx[j]){
Se[j]=max(Mx[j],Se[j|(<<i)]);
Mx[j]=Mx[j|(<<i)];
}
else Se[j]=max(Mx[j|(<<i)],Se[j]);
}
}
}
ans=;
for(int i=;i<maxn;i++) ans=max(ans,(ll)i*Mx[i]*Se[i]);
printf("%lld\n",ans);
}
return ;
}

最新文章

  1. 《构建之法》8&amp;16
  2. sql 盲注之正则表达式攻击
  3. HSDB
  4. 如何绕过chrome的弹窗拦截机制
  5. (实用篇)PHP页面跳转到另一个页面的方法总结
  6. UVa532 Dungeon Master 三维迷宫
  7. (转载)c语言指针学习
  8. [034] 微信公众帐号开发教程第10篇-解析接口中的消息创建时间CreateTime(转)
  9. mime.go
  10. Windows Server 2016-MS服务器应用程序兼容性列表
  11. python迭代和解析(3):range、map、zip、filter和reduce函数
  12. css学习_css布局案例
  13. 简单的知识图谱,neo4j+python
  14. hdu-1179(匈牙利算法)
  15. 主机安全扫描工具-- vuls
  16. Alpha 冲刺报告(8/10)
  17. unix网络编程——TCP套接字编程
  18. 调试日志——基于stm32的智能声光报警器(三)
  19. 2015 Multi-University Training Contest 5 1009 MZL&#39;s Border
  20. C++面向对象高级编程(三)基础篇

热门文章

  1. 【Semantic Segmentation】Segmentation综述
  2. webservice用cxf发布SOAP
  3. 解题报告:poj2387 dijkstra
  4. Asp.net mvc word预览与打印
  5. jQuery实际案例②——三层轮播图
  6. 深入浅出-Binding的源与路径
  7. Runtime.getRuntime.exec();
  8. nyi63——树
  9. nyoj35——逆波兰表达式
  10. ansible modules开发(二)