LINK:小V的序列

考试的时候 没想到正解 于是自闭.

题意很简单 就是 给出一个序列a 每次询问一个x 问序列中是否存在y 使得x^y的二进制位位1的个数<=3.

容易想到 暴力枚举。

第一个想法是在trie树上乱跳 但是可以证明 和直接暴力无异.

暴力是 mlog^3的。

可以两头枚举 枚举n的生成一次 枚举m的变化两次 利用hash存前者.

复杂度降到mlog^2. 这个做法 时间和空间两个都爆。

正解:二进制数有 64位 只要求三个位置不同 那么 我们画出这三个位置 可以发现 三个位置中一定有两个位置之间相差16位.

利用16位二进制数来分段 那么相当于 n个数都均摊给2^16.

那么每一个2^16的地方 都最多有10个数字左右。

对于询问 我们也是分段然后查询即可。

由于数据基本上算是随机 所以这样做复杂度位均摊所以是正确的。

如果存在答案 可以证明 一定可以找到答案所在.

注意 输入64位整数的格式为%llu 常数写的不要太大.

const ll MAXN=1000010,INV=(mod+1)/2;
ll n,m;ull s;
ull a[MAXN];
vector<ll>g[1<<16][4];
ull G(ull x)
{
x^=x<<13;
x^=x>>7;
x^=x<<17;
return x;
}
inline ll ksm(ll b,ll p)
{
ll cnt=1;
while(p)
{
if(p&1)cnt=(ll)cnt*b%mod;
b=(ll)b*b%mod;p=p>>1;
}
return cnt;
}
inline ll pd(ll x,ull ww)
{
ull cc=a[x]^ww;
ll cnt=0;
while(cc)
{
++cnt;
cc-=cc&(-cc);
if(cnt>3)return 0;
}
return 1;
}
signed main()
{
//freopen("1.in","r",stdin);
scanf("%lld%lld",&n,&m);scanf("%llu",&s);
ull x=s;
ll maxx=1<<16;--maxx;
rep(0,n-1,i)
{
ull s=x;
a[i]=x;
rep(0,3,j)
{
ll ww=s&maxx;
g[ww][j].pb(i);
s=s>>16;
}
x=G(x);
}
ll cc=ksm(2,m-1);
ll ans=0;
rep(1,m,i)
{
ull x;
scanf("%llu",&x);
ull s=x;ll flag=0;
rep(0,3,j)
{
ll ww=s&maxx;
if(g[ww][j].size())
rep(0,g[ww][j].size()-1,k)if(pd(g[ww][j][k],x)){flag=1;break;}
s=s>>16;
if(flag)break;
}
if(flag)ans=(ans+cc)%mod;
cc=cc*INV%mod;
}
//rep(1,n-1,i)a[i]=G(a[i-1]);
//rep(0,n-1,i)putl((ll)a[i]);
putl(ans);
return 0;
}

5.15 牛客挑战赛40 B 小V的序列 关于随机均摊分析 二进制的更多相关文章

  1. 5.15 牛客挑战赛40 C 小V和字符串 数位dp 计数问题

    LINK:小V和字符串 容易想到只有1个数相同的 才能有贡献. 知道两个01串 那么容易得到最小步数 大体上就是 第一个串的最前的1和第二个串最前的1进行匹配. 容易想到设f[i][j]表示 前i位1 ...

  2. 5.15 牛客挑战赛40 E 小V和gcd树 树链剖分 主席树 树状数组 根号分治

    LINK:小V和gcd树 时限是8s 所以当时好多nq的暴力都能跑过. 考虑每次询问暴力 跳父亲 这样是nq的 4e8左右 随便过. 不过每次跳到某个点的时候需要得到边权 如果直接暴力gcd的话 nq ...

  3. 牛客挑战赛40 VMware和基站 set 二分 启发式合并 区间覆盖

    LINK:VMware和基站 一道 做法并不常见的题目 看起来很难写 其实set维护线段就可以解决了. 容易想到 第二个操作借用启发式合并可以得到一个很不错的复杂度 不过利用线段树维护这个东西 在区间 ...

  4. 牛客练习赛44 A 小y的序列 (模拟,细节)

    链接:https://ac.nowcoder.com/acm/contest/634/A 来源:牛客网 小y的序列 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语 ...

  5. 牛客练习赛40 A 小D的剧场 (思维dp)

    链接:https://ac.nowcoder.com/acm/contest/369/A 题目描述 若你摘得小的星星 你将得到小的幸福  若你摘得大的星星 你将得到大的财富  若两者都能摘得 你将得到 ...

  6. 牛客练习赛40 C 小A与欧拉路(树的直径)

    链接:https://ac.nowcoder.com/acm/contest/369/C 题目描述 小A给你了一棵树,对于这棵树上的每一条边,你都可以将它复制任意(可以为0)次(即在这条边连接的两个点 ...

  7. 牛客挑战赛 30 A 小G数数

    题目链接:https://ac.nowcoder.com/acm/contest/375/A 分析:我写的时候竟然把它当成了DP....... 还建了个结构体DP数组,保存一二位,不知道当时脑子在抽啥 ...

  8. 【牛客挑战赛30D】小A的昆特牌(组合问题抽象到二维平面)

    点此看题面 大致题意: 有\(S\)张无编号的牌,可以将任意张牌锻造成\(n\)种步兵或\(m\)种弩兵中的一种,求最后步兵数量大于等于\(l\)小于等于\(r\)的方案数. 暴力式子 首先我们来考虑 ...

  9. 牛客小白月赛13-J小A的数学题 (莫比乌斯反演)

    链接:https://ac.nowcoder.com/acm/contest/549/J来源:牛客网 题目描述 小A最近开始研究数论题了,这一次他随手写出来一个式子,∑ni=1∑mj=1gcd(i,j ...

随机推荐

  1. h5移动端实现图片文件上传

    PC端上传文件多半用插件,引入flash都没关系,但是移动端要是还用各种冗余的插件估计得被喷死,项目里面需要做图片上传的功能,既然H5已经有相关的接口且兼容性良好,当然优先考虑用H5来实现. JS代码 ...

  2. html通过css,js实现div悬浮效果总汇,如原生JS实现滚动到一定位置实现div悬浮

    在我们的实际开发中,经常会遇到页面中需要悬浮效果,比如最早的客服联系,对联悬浮广告等,今天为大家介绍一些如何实现div悬浮的效果. 传统的fixed实现: 通过css中的属性position参数设为f ...

  3. HDU 4352 XHXJ's LIS HDU(数位DP)

    HDU 4352 XHXJ's LIS HDU 题目大意 给你L到R区间,和一个数字K,然后让你求L到R区间之内满足最长上升子序列长度为K的数字有多少个 solution 简洁明了的题意总是让人无从下 ...

  4. call_user_func的使用

    <?php function demo01($a) { echo $a; } call_user_func("demo01", "hello world" ...

  5. keepalived 热备

    概述 keepalived高可用集群      keepalived最初是为了LVS的,因为LVS无法进行自动检测服务器的节点状态(可以自动部署LVS)     keeplived后来加入VRRP给功 ...

  6. 一篇夯实一个知识点系列--python装饰器

    写在前面 本系列目的:希望可以通过一篇文章,不望鞭辟入里,但求在工程应用中得心应手. 装饰器模式是鼎鼎大名的23种设计模式之一.装饰器模式可以在不改变原有代码结构的情况下,扩展代码功能. Python ...

  7. Scala 基础(六):Scala变量 (三) 标识符

    1 标识符概念 1) Scala 对各种变量.方法.函数等命名时使用的字符序列称为标识符 2) 凡是自己可以起名字的地方都叫标识符 2 标识符的命名规则 Scala中的标识符声明,基本和Java是一致 ...

  8. Mysql基础(七):数据库总结

    目录 MySQL数据库06 /数据库总结 1. 数据库/DBMS 2. 数据库分类 3. 修改密码 4. 库操作 5. 表操作 6. 存储引擎 7. 事务 8. 约束 9. 数据类型 10. 单表语句 ...

  9. Python函数03/函数名的第一类对象及使用/f 格式化/迭代器/递归

    Python函数03/函数名的第一类对象及使用/f 格式化/迭代器/递归 目录 Python函数03/函数名的第一类对象及使用/f 格式化/迭代器/递归 内容纲要 1.函数名的第一类对象及使用 2.f ...

  10. 如何使用ABP进行软件开发(2) 领域驱动设计和三层架构的对比

    简述 上一篇简述了ABP框架中的一些基础理论,包括ABP前后端项目的分层结构,以及后端项目中涉及到的知识点,例如DTO,应用服务层,整洁架构,领域对象(如实体,聚合,值对象)等. 笔者也曾经提到,AB ...