https://www.lydsy.com/JudgeOnline/problem.php?id=5285

|0 和 &1 没有影响

若填‘|’,记为0,若填‘&’,记为1

先只考虑最后一位

若要求最后=1

那么最后一个|1 要在最后一个 &0 后面

将n个数的最后一位拿出来构成一个01序列

填在所有数最后一位之前的运算符也拿出来构成一个01序列

将第n个数所在位置视为最高位

对于最高位来说

如果数字序列 和 运算符序列 都是0或都是1,没有影响

如果数字序列是0,运算符序列是1,即最后是 &0,显然不能最终等于1,所以这种运算符序列不合法

如果数字序列是1,运算符序列是0,及最后是|1,显然一定是1,这种运算符序列合法

如果数字序列始终等于运算符序列,因为没有影响,所以最终开始开始的那个0,此运算符序列也不合法

所以

如果这一位要求是1,在只考虑这一位的情况下,合法的运算符序列是 运算符的01序列<数字的01序列

同理可以推出

如果这一位要求是0,在只考虑这一位的情况下,合法的运算符序列是 运算符的01序列>=数字的01序列

即可以得到这样的条件:

设合法的运算符序列为S,第i位的数字序列为Ai

若p的第i位为1,则S<Ai  ①

若p的第i位为0,则S>=Ai ②

记①中最小的Ai为 up,②中最大的Ai为down

所以满足所有位的要求的S的个数=up-down

计算个数开始想的是高精减,题目要求取模,直接哈希即可

#include<cstdio>
#include<algorithm> #define N 5001 using namespace std; const int mod=1e9+; int bit[N]; char s[N];
int has[N]; int sa[N],now[N]; int main()
{
int n,m,q;
scanf("%d%d%d",&n,&m,&q);
bit[]=;
for(int i=;i<=n;++i)
{
bit[i]=bit[i-]<<;
bit[i]-=bit[i]>=mod ? mod : ;
}
for(int i=;i<=m;++i) sa[i]=i;
int c[];
for(int i=;i<=n;++i)
{
c[]=c[]=;
scanf("%s",s+);
for(int j=;j<=m;++j)
{
has[j]=has[j]+(s[j]-'')*bit[i-];
has[j]-=has[j]>=mod ? mod : ;
c[s[j]-'']++;
}
c[]+=c[];
for(int j=m;j;--j) now[c[s[sa[j]]-'']--]=sa[j];
swap(sa,now);
}
int up,down;
for(int t=;t<=q;++t)
{
up=m+; down=;
scanf("%s",s+);
for(int i=;i<=m && up==m+;++i)
if(s[sa[i]]-'') up=i;
for(int i=m;i && !down;--i)
if(!(s[sa[i]]-'')) down=i;
if(up<down)
{
puts("");
continue;
}
up= up==m+ ? bit[n] : has[sa[up]];
down= !down ? : has[sa[down]];
printf("%d\n",(up-down+mod)%mod);
}
}

bzoj千题计划310:bzoj5285: [Hnoi2018]寻宝游戏(思维题+哈希)的更多相关文章

  1. [bzoj5285] [HNOI2018]寻宝游戏

    Description 某大学每年都会有一次Mystery Hunt的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得这一年出题的机会. 作为新生的你,对这个活动非常感兴趣. ...

  2. 洛谷P4424 [HNOI/AHOI2018]寻宝游戏(思维题)

    题意 题目链接 Sol 神仙题Orz Orz zbq爆搜70.. 考虑"与"和"或"的性质 \(0 \& 0 = 0, 1 \& 0 = 0\) ...

  3. 【BZOJ5285】[HNOI2018]寻宝游戏(神仙题)

    [BZOJ5285][HNOI2018]寻宝游戏(神仙题) 题面 BZOJ 洛谷 题解 既然是二进制按位的运算,显然按位考虑. 发现这样一个关系,如果是\(or\)的话,只要\(or\ 1\),那么无 ...

  4. 5285: [Hnoi2018]寻宝游戏

    5285: [Hnoi2018]寻宝游戏 链接 分析: 从下面依次确定运算符号,然后在确定的过程中,需要确定的位数会逐渐减少.比如最后有一个1,如果在从下往上确定了一个or 1,那么再往前可以随便选了 ...

  5. BZOJ.5285.[AHOI/HNOI2018]寻宝游戏(思路 按位计算 基数排序..)

    BZOJ LOJ 洛谷 话说vae去年的专辑就叫寻宝游戏诶 只有我去搜Mystery Hunt和infinite corridor了吗... 同样按位考虑,假设\(m=1\). 我们要在一堆\(01\ ...

  6. bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机

    http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...

  7. bzoj千题计划276:bzoj4515: [Sdoi2016]游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=4515 把lca带进式子,得到新的式子 然后就是 维护树上一次函数取min 一个调了一下午的错误: 当 ...

  8. bzoj千题计划116:bzoj1025: [SCOI2009]游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=1025 题目转化: 将n分为任意段,设每段的长度分别为x1,x2,…… 求lcm(xi)的个数 有一个 ...

  9. bzoj 5285: [Hnoi2018]寻宝游戏

    Description Solution 把输入的 \(n\) 个二进制数看作一个大小为 \(n*m\) 的矩阵 把每一列压成一个二进制数,其中最高位是最下面的元素 然后就有了 \(m\) 个二进制数 ...

随机推荐

  1. Navicat再次激活

    换了个新电脑,上一次激活用的注册机老被杀掉,defender什么的都关了,不知道是谁在暗中保护我的电脑.. 上个激活参考:https://www.cnblogs.com/MC-Curry/p/9765 ...

  2. Eslint相关知识和配置大全

    ESLint最初是由Nicholas C. Zakas 于2013年6月创建的开源项目.它的目标是提供一个插件化的javascript代码检测工具. 代码检查是一种静态的分析,常用于寻找有问题的模式或 ...

  3. JLOI2015 DAY1 简要题解

    「JLOI2015」有意义的字符串 题意 给你 \(b, d, n\) 求 \[ [(\frac{b + \sqrt d}2)^n] \mod 7528443412579576937 \] \(0 & ...

  4. 【BZOJ5292】[BJOI2018]治疗之雨(高斯消元)

    [BZOJ5292][BJOI2018]治疗之雨(高斯消元) 题面 BZOJ 洛谷 题解 设\(f[i]\)表示剩余\(i\)点生命时的期望死亡的次数. 考虑打\(k\)次下来脸上被打了\(i\)下的 ...

  5. [CQOI2017]老C的方块

    题目描述 https://www.lydsy.com/JudgeOnline/problem.php?id=4823 题解 观察那四种条件 有没有什么特点? 我们可以把蓝线两边的部分看做两个区域,这样 ...

  6. 洛谷P2468 SDOI 2010 粟粟的书架

    题意:给你一个矩形书架,每个点是这本书的页数,每次询问(x1,y1)(x2,y2)这个小矩形里最少需要取几本书使得页数和等于Hi. 题解:小数据二位前缀和预处理+二分答案,大数据一行所以用主席树做,感 ...

  7. 使用Disruptor实现生产者和消费者模型

    生产者 package cn.lonecloud.procum.disruptor; import cn.lonecloud.procum.Data; import com.lmax.disrupto ...

  8. 洛谷P4384 制胡窜

    这题TM是计数神题......SAM就是个板子,别脑残写错就完事了.有个技巧是快速定位子串,倍增即可. 考虑反着来,就是两个断点切割所有串,求方案数. 大概分类讨论一下......先特判掉一些情况.然 ...

  9. bzoj2208 连通数(bitset优化传递闭包)

    题目链接 思路 floyd求一下传递闭包,然后统计每个点可以到达的点数. 会tle,用bitset优化一下.将floyd的最后一层枚举变成bitset. 代码 /* * @Author: wxyww ...

  10. MySQL 之 库操作,表操作

    系统数据库 information_schema :虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等 mysql:核心数据库,里面包含用户.权限.关键 ...