SD 胡策 Round 1 T3 彩尾巴猹的二进制数

 

    发现一个区间[L,R]代表的2进制数是3的倍数,当且仅当从L开始的后缀二进制值 - 从R+1开始的后缀二进制值 是 3 的倍数 (具体证明因为太简单而被屏蔽)。

    于是我们就可以在每个点维护从它开始的后缀二进制数的值,因为在%3同余系下只有3个数,所以我们可以很容易的用线段树进行区间维护,然后答案就是 C(num[0],2) + C(num[1],2) + C(num[2],2)    [注意如果查询区间是 [l,r]的话那么 在线段树中查找的区间是 [l,r+1] ,因为区间[x,y]对应 x和y+1后缀相减]。

    但是有修改咋办呢?

    给每个位置设一个权值,后缀长度是奇数的权值是1,反之则是2。

    然后稍微动脑子想一下,如果  一个位置修改前是 1  和  这个位置权值是 1  这两个条件只满足其中一个,那么就是对前缀区间 +1;否则就是对前缀区间+2。

    所以随便写个线段树打打标记就好啦。

 

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=500005;
int a[maxn],val[maxn],tag[maxn*4];
int n,m,sum[maxn*4][3],hz[maxn];
int le,ri,W,opt,ans[3];inline int read(){int x=0; char ch=getchar();for(;!isdigit(ch);ch=getchar());for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';return x;
}inline int add(int x,int y){ x+=y; return x>=3?x-3:x;}inline void maintain(int o,int lc,int rc){sum[o][0]=sum[lc][0]+sum[rc][0];sum[o][1]=sum[lc][1]+sum[rc][1];sum[o][2]=sum[lc][2]+sum[rc][2];
}inline void CG(int o,int VAL){int T=sum[o][0];tag[o]=add(tag[o],VAL);if(VAL==1){sum[o][0]=sum[o][2];sum[o][2]=sum[o][1];sum[o][1]=T;}else{sum[o][0]=sum[o][1];sum[o][1]=sum[o][2];sum[o][2]=T;}
}inline void pushdown(int o,int lc,int rc){if(tag[o]){CG(lc,tag[o]),CG(rc,tag[o]);tag[o]=0;}
}void build(int o,int l,int r){if(l==r){sum[o][hz[l]]++;return;}int mid=l+r>>1,lc=o<<1,rc=(o<<1)|1;build(lc,l,mid),build(rc,mid+1,r);maintain(o,lc,rc);
}void update(int o,int l,int r){if(l>=le&&r<=ri){CG(o,W);return;}int mid=l+r>>1,lc=o<<1,rc=(o<<1)|1;pushdown(o,lc,rc);if(le<=mid) update(lc,l,mid);if(ri>mid) update(rc,mid+1,r);maintain(o,lc,rc);
}void query(int o,int l,int r){if(l>=le&&r<=ri){ans[0]+=sum[o][0];ans[1]+=sum[o][1];ans[2]+=sum[o][2];return;}int mid=l+r>>1,lc=o<<1,rc=(o<<1)|1;pushdown(o,lc,rc);if(le<=mid) query(lc,l,mid);if(ri>mid) query(rc,mid+1,r);
}inline ll getC(int x){ return x?x*(ll)(x-1)>>1:0;}inline void solve(){while(m--){opt=read();if(opt==1){le=1,ri=read();if(a[ri]+val[ri]==2) W=2; else W=1;a[ri]^=1,update(1,1,n);}else{le=read(),ri=read(),ri++;ans[0]=ans[1]=ans[2]=0;query(1,1,n);printf("%lld\n",getC(ans[0])+getC(ans[1])+getC(ans[2]));}}
}int main(){n=read(),m=read();for(int i=1;i<=n;i++) a[i]=read();n++,val[n]=2,hz[n]=0;for(int i=n-1;i;i--){val[i]=3-val[i+1];hz[i]=add(hz[i+1],val[i]*a[i]);}build(1,1,n);solve();return 0;
}

  

转载于:https://www.cnblogs.com/JYYHH/p/8868100.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280563.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

求解10的75次方问题

对于求一个数的高次方&#xff0c;最简单的方法&#xff0c;恐怕就是循环一定的次数&#xff0c;累乘。但是这样的效率太低。下面我提供一个高效的算法。来自左程云《程序员代码面试指南》。 就拿10的75次方举例&#xff1a; 1.75的二进制数形式是1001011。 2.10的75次方10的64…

又是新的一周

自己的决定还记得吗转载于:https://www.cnblogs.com/zhangxiangning/p/10300093.html

django16: csrf跨站请求伪造/CSRF相关装饰器

CSRF 即跨站请求攻击 跨站请求伪造csrf钓鱼网站本质搭建一个跟正常网站一模一样的页面用户在该页面上完成转账功能转账的请求确实是朝着正常网站的服务端提交唯一不同的在于收款账户人不同给用户书写form表单 对方账户的input没有name属性你自己悄悄提前写好了一个具有默认的…

dropbox_Google的新存储定价与Microsoft,Apple和Dropbox相比如何

dropboxGoogle’s subscription storage service has a new name: Google One. Some prices are dropping and customers will also get customer support from an actual human for the first time. Google的订阅存储服务有一个新名称&#xff1a;Google One。 一些价格正在下…

WPF效果第二百零六篇之快速黑白灰效果

一大早就看到群友讨论怎么快速让界面黑白灰效果,这不突然想起来N年前咱简单通过ShaderEffects调节过饱和度、对比度、亮度;今天再次玩耍一下;来看看最终实现的效果:1、核心代码&#xff1a;sampler2D implicitInput : register(s0); float factor : register(c0); float4 main(…

极大似然估计与贝叶斯定理

文章转载自&#xff1a;https://blog.csdn.net/zengxiantao1994/article/details/72787849 极大似然估计-形象解释看这篇文章&#xff1a;https://www.zhihu.com/question/24124998 贝叶斯定理-形象解释看这篇文章&#xff1a;https://www.zhihu.com/question/19725590/answer/…

艾媒:第三方应用商店形成BAT3争霸格局

iiMedia Research(艾媒咨询)近日发布的《2016Q2中国移动应用商店市场监测报告》&#xff0c;报告显示&#xff0c;2016年第二季度&#xff0c;第三方移动应用商店用户增长放缓&#xff0c;用户规模逐渐饱和。同时&#xff0c;随着豌豆荚宣布并入阿里移动事业群&#xff0c;中国…

编译安装内核

编译安装内核 升级内核到 linux-4.20.3.tar.xz 查看当前内核版本&#xff1a; [rootcentos7 data]#uname -r 3.10.0-862.el7.x86_64获取内核源代码包&#xff1a;www.kernel.org linux-4.20.3.tar.xz 实施步骤 1. 安装编译所需的工具 gcc ncurses-devel make&#xff08;开发工…

layui 启用禁用_在不启用Apple Pay的情况下禁用烦人的Apple Pay通知

layui 启用禁用iPhone/iPad: Not interested in Apple Pay, and tired of seeing notifications about it? You can disable them, but the option is hidden. iPhone / iPad&#xff1a;对Apple Pay不感兴趣&#xff0c;又厌倦了看到有关它的通知&#xff1f; 您可以禁用它们…

数字孪生项目实战,WPF与Unity结合开发之路(一)

数字孪生项目实战&#xff0c;WPF与Unity结合开发之路&#xff08;一&#xff09;数字孪生项目实战&#xff0c;WPF与Unity结合开发之路&#xff08;一&#xff09;作 者&#xff1a;水娃嗨大家好&#xff0c;我是一名骨灰级的WPF开发者&#xff0c;我叫水娃。这次主要是向大…

django17:importlib应用中间件代码思想

转载&#xff1a;https://www.cnblogs.com/alice-bj/articles/9276880.html 背景 仿django的中间件的编程思想 用户可通过配置&#xff0c;选择是否启用某个组件/某个功能&#xff0c;只需要配置 eg:报警系统&#xff0c;发邮件&#xff0c;发微信 。。。 ( 根据字符串导入…

Python 全栈开发基础

python面向对象 python异常处理 python网络编程 python并发编程 临时目录 转载于:https://www.cnblogs.com/fixdq/p/8883304.html

IBM连续两年大数据市场占有率全球第一

ZDNet至顶网服务器频道 04月22日 新闻消息:IBM 近日宣布&#xff0c;根据市场调研机构Wikibon最新研究报告《大数据供应商收益与市场预测》&#xff0c;IBM连续两年实现大数据市场占有率第一&#xff0c;领跑报告中的70多家大数据供应商。同期&#xff0c;IBM年度报告也显示&am…

idou老师教你学Istio06: 如何用istio实现流量迁移

流量迁移是流量管理的一个重要功能。istio提供的流量管理功能将流量从基础设施扩展中解耦&#xff0c;支持动态请求路由&#xff0c;故障注入、超时重试、熔断和流量迁移等。流量迁移的主要目的是将流量从微服务的某一版本的逐步迁移至另一个版本&#xff0c;如在新旧版本之间进…

用最少的代码,写一个完整MES项目(.NET6+WPF)

工业4.0时代&#xff0c;智能智造MES系统大行其道&#xff0c;然而基于.NET跨平台的罕见&#xff01;这里有一套《.NET6WPF企业级MES实战》教程&#xff0c;基于.NET6跨平台开发&#xff0c;实现了MES多核心功能&#xff0c;尤其是开发框架完整&#xff0c;非常适合复用。这里分…

django18:auth模块

Auth模块 执行数据库迁移命令后&#xff0c;自动生产多个表。 django_session auth_user 直接访问admin路由&#xff0c;需要输入用户名和密码&#xff0c;就是参考auth_user表 管理员用户才能进入 创建超级用户 createsuperuser from django.contrib import auth1.校验用…

hulu dpp_什么是直播电视的Hulu,它可以代替您的有线电视订阅吗?

hulu dppStreaming cable replacements are becoming a much more appealing option for cable cutters across the board, with more choices available than ever before. Hulu’s Live TV option is a relative newcomer to the scene, but is it worth it? 对于全系列的电…

suse linux ssh远程无法访问问题

当正常安装完Suse Linux Enterprise Server 11 sp1 时&#xff0c;无法通过SecureCRT或者PuTTY之类的终端程序进行连接。 折腾了一下&#xff0c;发现问题所在&#xff1a; 1、 需要关闭防火墙&#xff0c;如下图在YAST里可以关闭&#xff0c;也可以使用下面命令行的方式&…

4.Linux的目录结构

Linux的目录结构 (1)"/"目录 Linux文件系统的入口&#xff0c;也是出于最高一级的目录 (2)"/bin" 基础系统所需要的那些命令位于此目录。也是最小系统所需要命令&#xff1b;比如ls、cp、mkdir等命令&#xff1b;功能和/usr/bin类似&#xff0c;这个目录中…

Jade —— 源于 Node.js 的 HTML 模板引擎

2013-12-11 发布Jade —— 源于 Node.js 的 HTML 模板引擎 开源项目介绍 web 模板引擎 node.js jade 207.8k 次阅读 读完需要 69 分钟54Jade 是一个高性能的模板引擎&#xff0c;它深受 Haml 影响&#xff0c;它是用 JavaScript 实现的&#xff0c;并且可以供 Node…