当前位置: 首页 > news >正文

杭州手机网站建设公司 网络服务媒体发稿公司

杭州手机网站建设公司 网络服务,媒体发稿公司,网址查询站长工具,品牌网站建设公司链接: https://www.luogu.org/problemnew/show/U47231 思路: 这道题其实就是一道双Lazy线段树裸题 因为我们知道,当k一定时,取反偶数次最后k位等于不取反 同理,当k一定时,翻转偶数次最后k位等于不取反 我们…

链接:

https://www.luogu.org/problemnew/show/U47231

思路:

这道题其实就是一道双Lazy线段树裸题

因为我们知道,当k一定时,取反偶数次最后k位等于不取反

同理,当k一定时,翻转偶数次最后k位等于不取反

我们使用双Lazy分别存下这两个东西

同时一直对2取模

同时我们使用标记永久化

向下传参Lazy

单点查询到这个点时,判断是否需要取反即可

取反和翻转是位运算基本知识

大家可以看代码

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define rij register int j
#define rii register int i
#define rs 65536
using namespace std;
struct tree{int fz,qf,val;
}x[250005];
int n,k,q,t,bs[50];
void ycl()
{bs[0]=1;for(rii=1;i<=25;i++){bs[i]=bs[i-1]*2;}
}
void cf(int val)
{unsigned int kkk=val;while(kkk!=0){cout<<kkk%2<<" ";kkk/=2;}cout<<endl;
}
int qf(int val)
{int bs=(1<<k);int ltt=val%bs;val-=ltt;ltt=-ltt;ltt--;unsigned kkk=ltt;kkk%=bs;return val+kkk;
}
int fz(int val)
{int bis=(1<<k);int ltt=val%bis;int v=0;val-=ltt;for(rii=1;i<=k;i++){v+=(ltt%2)*bs[k-i];ltt/=2;}return val+v;
}
void add(int wz,int nl,int nr,int val,int bh)
{if(wz==nl&&wz==nr){x[bh].val=val;return;}int mid=(nl+nr)/2;if(wz<=mid){add(wz,nl,mid,val,bh*2);}else{add(wz,mid+1,nr,val,bh*2+1);}
}
void change1(int l,int r,int nl,int nr,int bh)
{if(l<nl){l=nl;}if(r>nr){r=nr;}if(l==nl&&r==nr){x[bh].qf++;x[bh].qf%=2;return;}int mid=(nl+nr)/2;if(l<=mid){change1(l,r,nl,mid,bh*2);}if(r>mid){change1(l,r,mid+1,nr,bh*2+1);}
}
void change2(int l,int r,int nl,int nr,int bh)
{if(l<nl){l=nl;}if(r>nr){r=nr;}if(l==nl&&r==nr){x[bh].fz++;x[bh].fz%=2;return;}int mid=(nl+nr)/2;if(l<=mid){change2(l,r,nl,mid,bh*2);}if(r>mid){change2(l,r,mid+1,nr,bh*2+1);}
}
int query(int wz,int nl,int nr,int bh,int lazy1,int lazy2)
{lazy1%=2;lazy2%=2;if(wz==nl&&wz==nr){lazy1+=x[bh].qf;lazy2+=x[bh].fz;int ltt=x[bh].val;if(lazy1==1){ltt=qf(ltt);}if(lazy2==1){ltt=fz(ltt);}return ltt;}int mid=(nl+nr)/2;if(wz<=mid){return query(wz,nl,mid,bh*2,lazy1+x[bh].qf,lazy2+x[bh].fz);}else{return query(wz,mid+1,nr,bh*2+1,lazy1+x[bh].qf,lazy2+x[bh].fz);}
}
void pd(int wz,int l,int r)
{if(l==r){if(x[wz].fz!=0){x[wz].fz=0;x[wz].val=fz(x[wz].val);}if(x[wz].qf!=0){x[wz].qf=0;x[wz].val=qf(x[wz].val);}return;}if(x[wz].fz!=0){x[wz*2].fz++;x[wz*2].fz%=2;x[wz*2+1].fz++;x[wz*2+1].fz%=2;}if(x[wz].qf!=0){x[wz*2].qf++;x[wz*2].qf%=2;x[wz*2+1].qf++;x[wz*2+1].qf%=2;}x[wz].qf=0;x[wz].fz=0;int mid=(l+r)/2;pd(wz*2,l,mid);pd(wz*2+1,mid+1,r);
}
int main()
{
//     freopen("XiaoX10.in","r",stdin);
//     freopen("XiaoX10.out","w",stdout);
    ycl();scanf("%d%d",&n,&t);for(rii=1;i<=n;i++){int val;scanf("%d",&val);add(i,1,rs,val,1);}for(rii=1;i<=t;i++){if(i!=1){pd(1,1,rs);}scanf("%d%d",&q,&k);int pid,l,r,wz;for(rij=1;j<=q;j++){scanf("%d",&pid);if(pid==1){scanf("%d%d",&l,&r);change1(l,r,1,rs,1);}if(pid==2){scanf("%d%d",&l,&r);change2(l,r,1,rs,1);}if(pid==3){scanf("%d",&wz);int ltt=query(wz,1,rs,1,0,0);printf("%d\n",ltt);}}}k=4;
}

 

转载于:https://www.cnblogs.com/ztz11/p/9877927.html

http://www.lbrq.cn/news/2650033.html

相关文章:

  • 石家庄做网站公司的电话网站推广该怎么做
  • 做私活 网站百度健康人工客服电话24小时
  • 舟山建设银行纪念币预约网站免费招聘信息发布平台
  • 网站程序代码优化引流软件有哪些
  • seo做的最好的网站排行朝阳网站建设
  • 网站推广营销应该怎么做seo免费系统
  • 用eclipse做jsp网站东莞seo排名收费
  • 顺德网站建设要多少钱baidu百度首页官网
  • 西安最好的网站建设公司我想做个网站怎么做
  • dede 中英文网站站长seo综合查询
  • 建网站要钱吗 优帮云自制网站
  • 毕设网站代做一般预算多少钱推广关键词如何优化
  • 有哪些手机网站十大接单推广平台
  • wordpress防止垃圾邮件方法aso搜索优化
  • 官网苹果手机14重庆百度整站优化
  • 鸿运网站建设搜索引擎最佳化
  • 网页怎么绑定wordpress北京seo产品
  • 网站的建设不包括什么福州网站快速排名提升
  • nba网站建设软文写作技巧及范文
  • 在线做热图的网站网站免费推广网站
  • 网站图片导入wordpress腾讯疫情实时数据
  • 太原网站域名开发福建百度推广开户
  • wordpress 外贸网站建设填写电话的广告
  • 如何制作一个软件app抖音关键词排名优化软件
  • 电影网站建设需要多少钱企业网络推广方法
  • wordpress的注册文件在哪山西seo排名厂家
  • 制作网站哪里做seo博客是什么意思
  • 吉林 网站备案 照相最近的电脑培训班在哪里
  • 租房网站开发视频教程bilibili官网网页入口
  • 独立网站优化的方法画质优化app下载
  • 【n8n】学习n8n【10】:Github的项目n8n-workflows:本地安装2,053 个 n8n 工作流程集合:随时看随时抄/学习~
  • qt文件操作与qss基础
  • 【unitrix数间混合计算】2.4 二进制整数标准化处理(src/number/normalize/int_normalize.rs)
  • 深入理解 Java AWT Container:原理、实战与性能优化
  • 翻译模型(TM):基于短语的统计翻译模型(PBSMT)的构建
  • 河南萌新联赛2025第四场-河南大学