Description

Solution

加法减法可以分开考虑,如果只有加法的话,直接暴力进位复杂度是对的

询问的时候就是把两个二进制数做差,判断第 \(k\) 位的取值

实际上我们只需要判断 \(1\) 到 \(k-1\) 位是否需要借位就知道了做差后的值

那么就需要判断两个二进制数的某个后缀的大小,我们二分出第一个不相同的位置,然后判断一下这一位的大小关系即可

可以用 \(zkw\) 线段树维护一下第一个不同的位置,类似于线段树上二分

#include<bits/stdc++.h>
using namespace std;
template<class T>void gi(T &x){
int f;char c;
for(f=1,c=getchar();c<'0'||c>'9';c=getchar())if(c=='-')f=-1;
for(x=0;c<='9'&&c>='0';c=getchar())x=x*10+(c&15);x*=f;
}
const int N=35000050,inf=1e9,M=1<<25;
int n,op,x,y,T;char s1[N],s2[N],d[N*2];
inline void add(){
gi(x);gi(y);
int l=inf,r=0;
char *a=(x>0?s1:s2);x=abs(x);
for(int i=0;i<=30;i++){
if(x>>i&1){
int t=y+i;
while(++a[t]>=2)a[t++]=0;
l=min(l,y+i);r=max(r,t);
}
}
for(int i=l;i<=r;i++)d[i+M]=s1[i]^s2[i];
for(l=(l+M)>>1,r=(r+M)>>1;l;l>>=1,r>>=1)
for(int i=l;i<=r;i++)d[i]=d[i<<1]|d[i<<1|1];
}
inline int query(int x){
for(int i=x+M;i;i>>=1){
if(i&1&d[i^1]){
for(i^=1;i<M;(i<<=1)|=d[i|1]);
return i-M;
}
}
return -1;
}
int main(){
freopen("pp.in","r",stdin);
freopen("pp.out","w",stdout);
gi(n);gi(T);gi(T);gi(T);
while(n--){
gi(op);
if(op==1)add();
else{
gi(x);y=query(x);
if(y==-1 || s1[y]>=s2[y])printf("%d\n",s1[x]^s2[x]);
else printf("%d\n",s1[x]==s2[x]);
}
}
return 0;
}

最新文章

  1. mysql 实战 or、in与union all 的查询效率
  2. IQueryable,IEnumerable,List相互转换
  3. 看门外汉如何实现:C#操作 MongoDB基本CURD的事务控制
  4. WPF中获得控件相对于控件的相对位置
  5. javascript高级特性(面向对象)
  6. 配置rhel 6.4(64位)安装使用syslog-ng 3.5
  7. linux tar.gz zip 减压 压缩命令
  8. 入坑系列之HAProxy负载均衡
  9. 【技能大赛笔记01】Zigbee点对点按键控制程序开发
  10. vue-router 页面布局
  11. BSGS+exBSGS POJ2417+POJ3243
  12. 记一次tomcat7.0版本启动项目失败问题
  13. echo显示空行
  14. js获取参数 解决乱码
  15. vue-router中query与params区别
  16. Mysql数据库基础小实例 学员管理系统菜单
  17. 图片视频访问servlet(支持苹果视频断点续传)
  18. Java--Jackson转换Date,Timestamp 到格式化字符串
  19. Nginx.conf 配置文件详细说明
  20. idea git 操作

热门文章

  1. 结构(struct)
  2. java 通过ip获取客户端mac地址
  3. Microsoft Office Specialist (MOS) 认证考试详解---word 2010 部分
  4. Apache 中httpd.conf文件配置详解(转载)
  5. 【maven】---pom.xml-dependencies
  6. winform datagridview记录的颜色设定
  7. spring框架里面的注入?
  8. javascript canvas画订单
  9. python2与python3差异,以及如何写两者兼容代码
  10. The score of &#39;O&#39; and &#39;X&#39;