日韩性视频-久久久蜜桃-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 (区间更新)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲第一免费 | 久久久久久蜜桃一区二区 | 97综合| 久久婷婷五月国产色综合激情 | 日本五十路 | 欧美午夜精品理论片a级按摩 | 日韩精选 | 尤物精品视频在线观看 | 亚洲精品1234 | 青青青草视频在线观看 | av色欲无码人妻中文字幕 | 天天爱天天色 | 国产精品久久久久久久久久久久久 | 五月婷婷社区 | 超能一家人电影免费喜剧在线观看 | 美女隐私免费网站 | 日韩有码av | 小嫩嫩精品导航 | 中文字幕18页 | 欧美精品一区二区三区视频 | 粉嫩av网站| 九九热精品视频在线观看 | 国产精品你懂得 | 最近日韩免费视频 | 国产又爽又猛又粗的视频a片 | 欧美国产一二三区 | 成人h动漫精品一区二区 | 男女黄色片| 日韩在线导航 | 91看片看淫黄大片 | 18xxxx日本 | 波多野结衣午夜 | 日韩精选视频 | 亲吻刺激视频 | 黑人狂躁日本妞hd | 久久精品国产亚洲av高清色欲 | 成人网在线播放 | 国产成人av无码精品 | 久久噜 | 亚洲国产av一区 | 日韩精品黄 | 欧美一级片网址 | 亚欧在线视频 | 美女激情av | 欧美资源网 | 插插插插综合 | 泰坦尼克号3小时49分的观看方法 | 天天操天天操天天操天天操天天操 | 日韩久久精品电影 | 国内视频一区二区三区 | 国产全肉乱妇杂乱视频 | 国产乱国产乱老熟300部视频 | 国产亚洲黄色片 | 欧美男女交配视频 | 国产精成人品免费观看 | 日韩夜夜高潮夜夜爽无码 | 在线视频观看你懂得 | 天天做夜夜爽 | 中文成人无字幕乱码精品区 | 欧美色涩在线第一页 | 免费毛片小视频 | 欧美性猛交一区二区三区精品 | 国产在线播放91 | 美女脱光内衣内裤 | 人人干人人艹 | 特黄视频在线观看 | 精品国产乱码久久久久久108 | 蜜臀999 | 久久久久久久久福利 | 国产一二区在线 | 国产精品一区二区亚洲 | 91porny丨首页入口在线 | 中国新婚夫妻性猛交 | 国产免费高清 | 九九久久精品视频 | av观看网 | 久久无码视频网站 | 天堂av√ | 国产一级特黄毛片 | 亚洲精品美女在线观看 | 色婷亚洲 | 久久天| 午夜在线你懂的 | 久久久久人妻一区二区三区 | 调教驯服丰满美艳麻麻在线视频 | 网站av在线 | 日p视频在线观看 | 又黄又色的网站 | 国产一级片a| 日韩精品短片 | 日本高清www免费视频 | 人人爱人人草 | 欧美黄色免费大片 | 亚洲日本免费 | 日韩中文第一页 | 欧美第一页在线 | 亚洲二区在线 | 激情www| 欧美一区二区三区激情啪啪 |