hiho 1496 : 寻找最大值 高维前缀最大&次大
来源:互联网 发布:sql 替换字符 编辑:程序博客网 时间:2024/04/29 08:02
题目连接点这里
在qqq巨的教导下,,终于会一点点高维前缀了,,,
这题,,我们可以先枚举(a[i]&a[j])
然后,,我们就是需要求包含(a[i]&a[j])这个二进制位的最大和次大的数,这种数称为超集
在我的理解,,01高维前缀和,就是用来就 求一个集合的子集和,最小最大值,,或者一个集合的超集的和,最小最大值
#include<algorithm>#include<iostream>#include<cstring>#include<queue>#include<cmath>#include<cstdio>using namespace std;#define mem(x,y) memset(x,y,sizeof(x))#define FIN freopen("input.txt","r",stdin)#define fuck(x) cout<<x<<endlconst int k=20;#define INF 0x3f3f3f3f#define lson l,m,rt<<1typedef long long LL;#define rson m+1,r,rt<<1|1int cnt[1<<k];int pre[1<<k][2];int main(){ int T; cin>>T; while(T--) { mem(cnt,0); mem(pre,0); int n; scanf("%d",&n); for(int i=1; i<=n; i++) { int x; scanf("%d",&x); if(pre[x][0]==0) pre[x][0]=x; else if(pre[x][1]==0) pre[x][1]=x; } for(int i=0; i<k; i++) for(int j=(1<<k)-1; j>=0; j--) if(~j&(1<<i)) { if(pre[j^(1<<i)][0]>pre[j][0]) { pre[j][1]=pre[j][0]; pre[j][0]=pre[j^(1<<i)][0]; } if(pre[j^(1<<i)][1]>pre[j][1]) { pre[j][1]=pre[j^(1<<i)][1]; } } LL ans=0; for(int i=0; i<=(1<<k)-1; i++) ans=max(ans,i*((LL)pre[i][0]*pre[i][1])); cout<<ans<<endl; } return 0;}
0 0
- hiho 1496 : 寻找最大值 高维前缀最大&次大
- hihoCoder 1496 : 寻找最大值
- hihocoder #1496 : 寻找最大值
- hihoCoder 1496 寻找最大值
- 【topcoder】SRM696 div1 550 Clicounting【折半枚举求最大团+高维前缀最大值】
- 高维前缀和
- leetcode--一个for循环找出数组最大和次最大值
- 同时寻找最大值和第二大值 锦标赛算法
- 遍历一次,得到最大和次大
- NKOI 2134 最大异或次大
- 寻找数组中最大值
- 寻找数组中最大值
- 寻找数组中最大值
- 寻找数组中最大值
- apply寻找数组最大值
- 寻找数组中最大值
- 寻找三角形-百度-最大值
- Hdu 5765 Bonds(高维前缀和)
- 菜鸟程序员的超神之路
- WebView:后退按钮的作用,替换成WebView里的查看历史页面
- 命令行编译源文件
- win7部分便笺的元数据已被损坏
- qt5.7.0creator打不开解决办法
- hiho 1496 : 寻找最大值 高维前缀最大&次大
- RBF神经网络
- HTTP请求
- C++ 常量指针和指针常量
- Linux内核之自旋锁和信号量
- 删除右键菜单
- Android之绘制文本(FontMetrics) 获取文本高度
- 蓝桥杯 快速排序
- 安卓webview和js+html交互利用的addJavascriptInterface和webview.loadUrl("javascript:**");