日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SPOJ MULTQ3 7299 Multiples of 3 (区间更新)

發布時間:2025/6/17 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SPOJ MULTQ3 7299 Multiples of 3 (区间更新) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?題目連接:http://www.spoj.com/problems/MULTQ3/

#include <iostream> #include <stdio.h> #include <string.h> #define lson rt<<1,L,mid #define rson rt<<1|1,mid+1,R /* 題意:給出n個數,初試為0,給出兩個操作;0 A B :將[A,B]區間中的每個數+11 A B :詢問[A,B]區間中有多少個能被3整除的數。 思路:每個節點存儲三個值:num0:整除3的個數,num1:除以3余1的個數,num2:除以3余2的個數更新的時候,只要將這三個值互換即可 */ using namespace std; const int maxn=100005; int n,m;struct Node{//num0:整除3的個數,num1:除以3余1的個數,num2:除以3余2的個數int num0,num1,num2;int lazy; //標記該區間+1的次數,如果三次+1相當于不變 }tree[maxn<<2];void build(int rt,int L,int R){tree[rt].num0=(R-L+1);tree[rt].num1=tree[rt].num2=0;tree[rt].lazy=0;if(L==R)return;int mid=(R+L)>>1;build(lson);build(rson); } void pushUp(int rt){tree[rt].num0=tree[rt<<1].num0+tree[rt<<1|1].num0;tree[rt].num1=tree[rt<<1].num1+tree[rt<<1|1].num1;tree[rt].num2=tree[rt<<1].num2+tree[rt<<1|1].num2; } void pushDown(Node &rt,Node &ls,Node &rs){if(rt.lazy==1){/*+1一次:num0->num1num1->num2num2->num0*/int tmp;tmp=ls.num0;ls.num0=ls.num2;ls.num2=ls.num1;ls.num1=tmp;ls.lazy=(ls.lazy+rt.lazy)%3;tmp=rs.num0;rs.num0=rs.num2;rs.num2=rs.num1;rs.num1=tmp;rs.lazy=(rs.lazy+rt.lazy)%3;rt.lazy=0;}else if(rt.lazy==2){/*+1二次:num0->num2num2->num1num1->num0*/int tmp;tmp=ls.num0;ls.num0=ls.num1;ls.num1=ls.num2;ls.num2=tmp;ls.lazy=(ls.lazy+rt.lazy)%3;tmp=rs.num0;rs.num0=rs.num1;rs.num1=rs.num2;rs.num2=tmp;rs.lazy=(rs.lazy+rt.lazy)%3;rt.lazy=0;} } void update(int rt,int L,int R,int l,int r){if(l<=L&&R<=r){int tmp;tmp=tree[rt].num0;tree[rt].num0=tree[rt].num2;tree[rt].num2=tree[rt].num1;tree[rt].num1=tmp;tree[rt].lazy=(tree[rt].lazy+1)%3;return;}pushDown(tree[rt],tree[rt<<1],tree[rt<<1|1]);int mid=(L+R)>>1;if(l<=mid)update(lson,l,r);if(r>mid)update(rson,l,r);pushUp(rt); } int query(int rt,int L,int R,int l,int r){if(l<=L&&R<=r){return tree[rt].num0;}pushDown(tree[rt],tree[rt<<1],tree[rt<<1|1]);int ret=0;int mid=(L+R)>>1;if(l<=mid)ret+=query(lson,l,r);if(r>mid)ret+=query(rson,l,r);return ret; } int main() {int t,a,b;scanf("%d%d",&n,&m);build(1,1,n);for(int i=1;i<=m;i++){scanf("%d%d%d",&t,&a,&b);a++;b++;if(t==0){update(1,1,n,a,b);}else{int ans=query(1,1,n,a,b);printf("%d\n",ans);}}return 0; }

?

轉載于:https://www.cnblogs.com/chenxiwenruo/p/3418459.html

總結

以上是生活随笔為你收集整理的SPOJ MULTQ3 7299 Multiples of 3 (区间更新)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产另类ts人妖一区二区 | 毛片久久久久久 | 精人妻无码一区二区三区 | 国产日韩欧美综合 | 三级网站在线看 | 成人伊人网 | 不卡福利视频 | 麻豆入口 | 天天操天天射天天 | 色戒在线免费 | 日本少妇影院 | 胖女人做爰全过程 | 一区二区播放 | 一区二区三区免费观看 | av在线免费观看一区 | www.久久艹 | 91亚洲网 | 久久久视频6r | 91在线视频观看 | 天天操天天插天天干 | 无套暴操 | 在线观看亚洲一区二区 | 一级黄色大片视频 | 污视频免费看 | 91视频免费在线观看 | ktv做爰视频一区二区 | 9久精品 | 久久123| 一区二区三区四区在线播放 | 深夜av在线| 久久亚洲aⅴ无码精品 | 国产乱码精品一区二区三区精东 | 国产麻豆免费视频 | 精品国产99久久久久久宅男i | 无码gogo大胆啪啪艺术 | 欧美日韩免费观看视频 | 九九热播视频 | 精品一区二区三区在线观看 | 国产图区| 国产原创视频在线观看 | 人妻少妇精品一区二区三区 | jizz自拍| 一区二区三区免费看视频 | 中文字幕一区在线观看 | 俺来也在线视频 | 国产视频久久久久久 | 国内外成人在线视频 | 亚洲欧美激情另类校园 | 精品国产一区二区三区四区阿崩 | 91欧美在线视频 | 亚洲一区自拍偷拍 | 欧美精选一区二区 | 99re这里只有精品6 | 成人性生交大片免费 | 亚洲h视频在线观看 | 欧美老熟妇乱xxxxx | 国产成人精品aa毛片 | 亚洲国产日韩欧美 | 欧美激情国产一区 | 国产经典三级在线 | 性久久久久| 日韩a级片| 日韩激情图片 | 青青草手机视频在线观看 | 国产视频二 | 国产精品嫩 | 男女男精品视频 | av久热| 午夜吃瓜| 亚洲精品白浆 | 日本一区视频在线播放 | 精品美女在线 | 午夜激情在线 | 精品视频一区二区三区四区五区 | 成人欧美一区 | 精品人妻无码专区在线 | 九九资源网 | 日本三级视频在线观看 | 片集网| 欧洲色av| 嫩草研究院在线观看 | 在线观看三区 | 亚洲一区二区三区无码久久 | japanese国产打屁股网站 | 五月天国产在线 | 蜜桃av在线免费观看 | 日本a级在线 | 亚洲一区二区三区欧美 | 美妇av| 伊是香蕉大人久久 | 精品一区二区三区无码按摩 | 香蕉国产片 | 国产一级一区二区 | www.夜夜夜 | 国产精品久久二区 | 亚洲啊啊 | 91最新地址 | 国产在线观看免费视频今夜 | 毛片在线免费观看视频 |