现场想到了lowbit(X xor Y)=X和Y从右向左数,对应相同的数的个数+1。。。然而并没有想到接下来用trie树

然后就想排个序试试。。。然后就整个人都不好了啊摔

sol:用trie,一边insert一边输出答案

找出Ai的二进制数翻转后在字母树上的路径,对于路径上每个点x,设他走的边是v,且当前为第k位,则和他xor后lowbit为2k的数的个数为trans(x,v^1)的子树大小。

注意这里v=0or1,即可以取的字符。

仿照lrj的模板写了一次。。结果写残了233。因为没有考虑好0这种情况

lrj模板里插入的都是字符串,不会存在0(也就是空)的情况。然而要想插入数字0就完蛋了

     int Insert(LL X)
     {
         ,dep=;
         )
         {
             )+;
             X=X>>;
             if(!ch[u][c])
             {
                 memset(ch[sz],,sizeof(ch[sz]));
                 ch[u][c]=sz;
                 sz++;
             }
             val[u]++;
             dp[u]=dep;
             dep++;
             f[ch[u][c]]=u;
             u=ch[u][c];
         }
         return u;
     }

写残的Code【雾

AC Code:

 #include <stdio.h>
 #include <string.h>
 #include <iostream>
 #include <algorithm>
 using namespace std;
 #define LL long long
 #define MOD 998244353;
 LL bit[];

 ];
 LL ans ;
 int T;

 struct Trie{
     *][];
     *];
     int root,tot;
     int newnode(){
         num[tot] = ;
         next[tot][] = next[tot][] = -;
         tot++;
         ;
     }
     void init(){
         tot = ;
         root = newnode();
     }
     void insert(int val){
         int now = root;
         ;i < ;i++){
             int id;
             ;
             ;
             ] != -){
                 //ans += (num[next[now][id^1]]<<i)%MOD;
                 ans += (]]%MOD;
                 ans %= MOD;
             }
             )
                 next[now][id] = newnode();
             now = next[now][id];
             num[now]++;
         }
     }
 }tree;

 int main()
 {
     bit[] = ;
     ;i < ;i++)
         bit[i] = *bit[i-];

     cin>>T;
     ;TT<=T;TT++)
     {
         int n;
         cin>>n;
         ans = ;
         tree.init();
         ;i <= n;i++)
         {
             scanf("%d",&a[i]);
             tree.insert(a[i]);
         }
         ans = ans*%MOD;
         printf("Case #%d: %I64d\n",TT,ans);
     }
     ;
 }

hdu 5269 trie树的更多相关文章

  1. HDU 1251 Trie树模板题

    1.HDU 1251 统计难题  Trie树模板题,或者map 2.总结:用C++过了,G++就爆内存.. 题意:查找给定前缀的单词数量. #include<iostream> #incl ...

  2. hdu 4099 Revenge of Fibonacci Trie树与模拟数位加法

    Revenge of Fibonacci 题意:给定fibonacci数列的前100000项的前n位(n<=40);问你这是fibonacci数列第几项的前缀?如若不在前100000项范围内,输 ...

  3. HDU 11488 Hyper Prefix Sets (字符串-Trie树)

    H Hyper Prefix Sets Prefix goodness of a set string is length of longest common prefix*number of str ...

  4. HDU 1251 统计难题 (字符串-Trie树)

    统计难题 Problem Description Ignatius近期遇到一个难题,老师交给他非常多单词(仅仅有小写字母组成,不会有反复的单词出现),如今老师要他统计出以某个字符串为前缀的单词数量(单 ...

  5. [知识点]Trie树和AC自动机

    // 此博文为迁移而来,写于2015年5月27日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w1s8.html 1.前 ...

  6. trie树---(插入、删除、查询字符串)

    HDU   5687 Problem Description 度熊手上有一本神奇的字典,你可以在它里面做如下三个操作:  1.insert : 往神奇字典中插入一个单词  2.delete: 在神奇字 ...

  7. hdu----(2222)Keywords Search(trie树)

    Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  8. Trie树入门及训练

    什么叫Trie树? Trie树即字典树. 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本 ...

  9. [转] Trie树详解及其应用

    一.知识简介         最近在看字符串算法了,其中字典树.AC自动机和后缀树的应用是最广泛的了,下面将会重点介绍下这几个算法的应用.       字典树(Trie)可以保存一些字符串->值 ...

随机推荐

  1. linux下,Python 多版本共存,及Pip,Easy_install 安装扩展包

    Python2与Python3共存 安装Python3后,建立ln,使用Python(Python2),Python3 来区分两个版本 使用sudo apt-get install python3-s ...

  2. tensor flow入门笔记

    个人学习笔记,欢迎交流.

  3. Django中提示TemplateDoesNotExist?

    用的是1.9版本.需要在settings.py文件中设置TEMPLATES下的DIRS如下: TEMPLATES = [ { 'BACKEND': 'django.template.backends. ...

  4. NopCommerce Url分析

    using System; using System.Web; using System.Web.Routing; using Nop.Core; using Nop.Core.Data; using ...

  5. BZOJ2051——A Problem For Fun

    0.题意:给出一个N个结点的树,每条边有一个正整数权值,定义两个结点的距离为连接这两个结点路径上边权的和.对于每个结点i,它到其他N-1个结点都有一个距离,将这些距离从小到大排序,输出第K个距离. 1 ...

  6. Effective C++ -----条款39:明智而审慎地使用private继承

    Private继承意味is-implemented-in-terms of(根据某物实现出).它通常比复合(composition)的级别低.但是当derived class需要访问protected ...

  7. sanBox部署简介

    参考资料:1  http://www.kaaproject.org/getting-started/  此链接告诉我们部署sandbox的两种方法. 2   http://docs.kaaprojec ...

  8. Nginx 反向代理、负载均衡、页面缓存、URL重写以及读写分离

    1.环境准备 前端Nginx:10.160.65.44 后端WEB服务器两台:10.160.65.49/10.160.65.50 2.安装Nginx: 下载nginx-1.9.15.tar.gz,放置 ...

  9. 不遗留问题-menu数据拼装-2

    $res = array(); foreach($idlist_1 as $id1) { $tmp = array(); $tmp1 = array(); $tmp1[] = $id1; foreac ...

  10. 通过iphone蓝牙与经过苹果MFI授权认证的硬件通讯,传输图片(转)

    http://blog.csdn.net/hwj2012/article/details/7883711 相关: http://blog.csdn.net/xufeidll/article/detai ...