将$n+1$个数字(还有0)标号为$[0,n]$,那么定义$a_{i,j}$表示第j个数上第i位上的值,如果第$i-1$个数与第$i$个数之间的运算符为与,那么令$b_{i}=1$,否则$b_{i}=0$,特别的,$b_{0}=1$(因此很明显有$b_{0}\ne a_{0,0}$,即$b\ne a_{i}$)
考虑对于第i位,那么结果其实就是最大的$a_{i,j}\ne b_{j}$的j上的$a_{i,j}$,如果这一位结果为0,当且仅当$a_{i}<b$(转化为二进制数,0为最低位),同理这一位结果为1,当且仅当$a_{i}>b$,那么我们就可以求出b的范围,又因为每一个b唯一对应一种方案,因此b的数量即为方案数量(细节上,由于$a_{i,0}<b_{0}$,因此$ai<b$等价于去掉最后一位后$ai=b$)
那么预处理将所有ai排序,然后枚举即可求出最小值和最大值,相减即为答案

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 5005
4 #define mod 1000000007
5 struct ji{
6 int a[1005];
7 }ans,a[N];
8 int n,m,q,id[N],rk[N];
9 char s[N];
10 bool cmp(int x,int y){
11 for(int i=1000;i;i--)
12 if (a[x].a[i]!=a[y].a[i])return a[x].a[i]<a[y].a[i];
13 return 0;
14 }
15 int main(){
16 scanf("%d%d%d",&n,&m,&q);
17 for(int i=1;i<=n;i++){
18 scanf("%s",s);
19 for(int j=0;s[j];j++)a[j].a[i]=s[j]-'0';
20 }
21 for(int i=0;i<m;i++)id[i]=i;
22 sort(id,id+m,cmp);
23 for(int i=0;i<m;i++)rk[id[i]]=i;
24 for(int i=1;i<=q;i++){
25 scanf("%s",s);
26 int x=-1,y=m;
27 for(int j=0;s[j];j++)
28 if (s[j]=='0')x=max(x,rk[j]);
29 else y=min(y,rk[j]);
30 if (x<0)ans=a[id[y]];
31 if (y==m)
32 for(int j=1;j<=n;j++)ans.a[j]=1-a[id[x]].a[j];
33 if ((x>=0)&&(y<m))
34 if (!cmp(id[x],id[y]))memset(ans.a,0,sizeof(ans.a));
35 else
36 for(int j=1,p=0;j<=1000;j++){
37 ans.a[j]=a[id[y]].a[j]-p-a[id[x]].a[j];
38 p=(ans.a[j]<0);
39 ans.a[j]+=p*2;
40 }
41 ans.a[0]=0;
42 for(int j=1000;j;j--)ans.a[0]=(ans.a[0]*2+ans.a[j])%mod;
43 printf("%d\n",(ans.a[0]+(y==m))%mod);
44 }
45 }

最新文章

  1. JavaScript备忘录
  2. Java研发岗位面试归类A(附答案)
  3. HTML5[5]:在移动端禁用长按选中文本功能
  4. Java-TreeSet
  5. Web前端新人笔记之文本属性
  6. 验证abc三列数字符合我的小弟要求
  7. springBoot基础系列--properties配置
  8. 谈谈如何用eoLinker管理各类API接口及分享API接口管理小技巧教程
  9. 请求库之selenium模块
  10. idea2018.1.5激活教程
  11. sql server 计算两个时间 相差的 几天几时几分几秒
  12. LOJ #2234. 「JLOI2014」聪明的燕姿(搜索 + 数论)
  13. python3+selenium入门02-操作火狐浏览器
  14. Cookie中设置了 HttpOnly,Secure 属性,有效的防止XSS攻击,X-Frame-Options 响应头避免点击劫持
  15. linux 下的clock_gettime() 获取时间函数
  16. DOM扩展:DOM API的进一步增强[总结篇-上]
  17. laravel注册行为的方法和逻辑
  18. 手动配置 Windows 时间服务
  19. Python使用SMTP发送邮件(163,yeah等网易邮箱已测试可以)
  20. 基于Apache在本地配置多个虚拟主机站点

热门文章

  1. t-SNE 从入门到放弃
  2. 题解 CF762D Maximum path
  3. pta天梯训练赛补题
  4. mybatis 操作数据库(05)
  5. DL4J实战之五:矩阵操作基本功
  6. kviy TextInput 触发事件
  7. 提升使用Linux效率的小操作
  8. AIApe问答机器人Scrum Meeting 5.5&amp;5.6
  9. 【二食堂】Alpha - Scrum Meeting 2
  10. 2021.10.9考试总结[NOIP模拟72]