博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
0x16 Trie
阅读量:5147 次
发布时间:2019-06-13

本文共 2227 字,大约阅读时间需要 7 分钟。

模板:

1 #include 
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 const int INF=0x3f3f3f3f; 8 const int maxn=1000000+10; 9 int n;10 int trie[maxn][26], tot=1;11 bool end[maxn];12 13 void insert(char *str) {14 int len=strlen(str), p=1;15 for (int i=0; i
View Code

坑:不能只做结尾标记,要记录个数。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 const int INF=0x3f3f3f3f; 8 const int maxn=1000000+10; 9 const int maxm=26*1000000+10;10 int n, m;11 int trie[maxn][26], tot=1;12 int endd[maxm];13 14 void insert(char *str) {15 int len=strlen(str), p=1;16 for (int i=0; i
View Code

把每个数转化为32位二进制整数,插入到Trie中,然后对于每个数贪心的选择与当前位相反的位。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 const int INF=0x3f3f3f3f; 8 const int maxn=40; 9 const int maxm=100000+10;10 int n;11 int trie[maxn*maxm][2], tot=1;12 13 void insert(int x) {14 int p=1;15 for (int i=31; i>=0; --i) {16 int c=(x>>i)&1;17 if (trie[p][c]==0) trie[p][c]=++tot;18 p=trie[p][c];19 }20 }21 22 int search(int x) {23 //printf("%d:\n", x);24 int p=1, ans=0;25 for (int i=31; i>=0; --i) {26 int c=(x>>i)&1;27 if (trie[p][c^1]) {28 p=trie[p][c^1];29 ans=(ans<<1)|1;30 }31 else {32 p=trie[p][c];33 ans=ans<<1;34 }35 //printf("%d ", ans);36 }37 return ans;38 }39 40 int main() {41 //freopen("a.txt", "r", stdin);42 //freopen("a.out", "w", stdout);43 scanf("%d", &n);44 int x, ans=-INF;45 for (int i=1; i<=n; ++i) {46 scanf("%d", &x);47 ans=max(ans, search(x));48 //printf("\n");49 insert(x);50 } 51 printf("%d\n", ans);52 return 0;53 }
View Code

 

转载于:https://www.cnblogs.com/kkkstra/p/11118467.html

你可能感兴趣的文章
Kettle学习系列之Kettle能做什么?(三)
查看>>
电脑没有安装iis,但是安装了.NET环境,如何调试网站发布的程序
查看>>
【Mac + GitHub】之在另一台Mac电脑上下载GitHub的SSH链接报错
查看>>
Day03:Selenium,BeautifulSoup4
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
postgis几何操作函数集
查看>>
35. Search Insert Position(C++)
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>
一些php文件函数
查看>>
std::min error C2059: 语法错误:“::” 的解决方法
查看>>
Opencv保存摄像头视频&&各种编码器下视频文件占用空间对比
查看>>
「图形学」直线扫描——Bresenham算法改进了中点Bresenham算法?
查看>>
jQuery 给div绑定单击事件
查看>>
Exceptionless 生产部署笔记
查看>>
有关快速幂取模
查看>>
转 ObjExporter Unity3d导出场景地图寻路
查看>>
Linux运维必备工具
查看>>
Ubuntu配置ssh及vnc
查看>>
C语言进阶——const 和 volatile 分析09
查看>>