Chip Factory HDU
来源:互联网 发布:广数980g75编程实列 编辑:程序博客网 时间:2024/06/15 22:54
题意:求下面这个公式的最大值:
maxi,j,k(si+sj)⊕sk
思路:如果用普通方法你要分别枚举3个数,n^3感觉会超时的。
然而完全莫有想到能用字典树,你先把所有的数保存下来,然后删去要用的i和j,再在里面找出能和a[i]+a[j]异或出的最大值。相当于值需要枚举i和j即可。
代码
#include<bits/stdc++.h>using namespace std;const int MAX_N = 1e3+9;int vec[MAX_N];int res[35];struct node{ long long int val,num; node *next[2]; node() { val = num = 0; next[0] = next[1] = NULL; }};node *root = new node;void insertnode(int x){ node *p = root , *q; for(int i=31;i>=0;i--) { int t = (x>>i)&1; if(!p->next[t]) { q = new node; q->num = 1; p->next[t] = q; p = p->next[t]; } else { p = p->next[t]; p->num ++; } } p->val = x;}long long int query(int x){ node *p = root , *q; for(int i=31;i>=0;i--) { int t = (x>>i)&1; if(p->next[t^1] && ((p->next[t^1])->num)) { p = p->next[t^1]; } else { p = p->next[t]; } } return p->val;}void deletenode(int x){ node *p = root , *q; for(int i=31;i>=0;i--) { int t = (x>>i)&1; p->next[t]->num -- ; p = p->next[t]; }}void dealnode(node *x){ if(!x) return ; if(x->next[0]) dealnode(x->next[0]); if(x->next[1]) dealnode(x->next[1]); delete(x);}int main(){ int N,M,T; cin>>T; while(T--) { root = new node; scanf("%d",&N); for(int i=0;i<N;i++) { scanf("%d",&vec[i]); insertnode(vec[i]); } long long int ans = -1; for(int i=0;i<N-1;i++) { for(int j=i+1;j<N;j++) { deletenode(vec[i]); deletenode(vec[j]); long long int temp = query(vec[i]+vec[j]); ans = max(ans,(vec[i]+vec[j])^temp); insertnode(vec[i]); insertnode(vec[j]); } } cout<<ans<<endl; dealnode(root); }}
阅读全文
0 0
- hdu 5536 Chip Factory
- HDU 5536 Chip Factory
- 【HDU】 5536 Chip Factory
- Chip Factory HDU
- Chip Factory HDU
- HDU 5536 Chip Factory
- hdu 5536 Chip Factory (暴力)
- hdu 5536 Chip Factory 字典树
- HDU 5536 Chip Factory 01字典树
- HDU-5536 Chip Factory(字典树)
- Chip Factory(HDU 5536 纯暴力)
- hdu 5563 Chip Factory(字典树)
- hdu 5536 Chip Factory 01 Trie
- HDU 5536 Chip Factory (01Trie)
- HDU 5536 Chip Factory (字典树)
- HDU 5536 Chip Factory(01字典树)
- HDU 5536 Chip Factory (枚举+01Trie)
- 01trie树 HDU 5536Chip Factory
- Linux下的地址映射
- 数据库的对象、数据类型、创建表
- Scrapy项目一:爬取电影资讯
- SpringCloud第四篇-Hystrix
- 《剑指offer》之关于sizeof()操作符
- Chip Factory HDU
- 一张“神图”看懂单机/集群/热备/磁盘阵列(RAID)(58沈剑)
- 置信区间、显著性检验和统计学意义
- Java中关键字static的用法总结大全
- 车载设置--自动关屏 PowerManagerService 源码浅析
- 快速幂&矩阵快速幂
- Linux&Win双系统下时间显示不正常的问题
- linux永久修改主机名
- P3932 浮游大陆的68号岛 【线段树】