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.pswp.cn/news/280563.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280563.shtml
英文地址,請注明出處:http://en.pswp.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…