1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          poj

          來源:互聯網轉載 時間:2024-01-29 07:44:53

          #include<iostream>
          #include<string.h>
          #include<cmath>
          #include<stdio.h>
          #include<algorithm>
          #include<stdlib.h>
          #include<iomanip>
          #define inf 0x3f3f3f3f
          #define ios() std::ios::sync_with_stdio(false)
          #define cin() cin.tie(0)
          #define cout() cout.tie(0)
          #define mem1(a) memset(a,0,sizeof(a))
          #define mem2(b) memset(b,'\0',sizeof(b))
          typedef long long ll;
          using namespace std;

          //10 5
          //1 2 3 4 5 6 7 8 9 10 //十個數
          //Q 4 4 ->4//查詢操作:查詢區間[4,4]內所有和
          //Q 1 10 ->55
          //Q 2 4 ->9
          //C 3 6 3 //插入操作:對[3,6]中每一個數+3
          //Q 2 4 ->15


          // [1,10]
          // / \
          // [1,5] [6,10]
          // / \ / \
          // [1,3] [4,5] [6,8] [9,10]
          // / \ / \ / \ / \
          // [1,2] 3 4 5 [6,7] 8 9 10
          // / \ / \
          // 1 2 6 7
          ll sum[400020],lazy[400020];

          void build(int left,int right,int point)
          //傳入左區間、右區間、根節點
          {
          if(left==right)
          {
          cin>>sum[point];
          return;
          }
          int mid=(left+right)/2;//>>1
          build(left,mid,point<<1);//point<<1//先建立左節點
          build(mid+1,right,point<<1|1);//建立右節點,節點數+1
          //|位運算,先把a,b轉化成二進制,然后位相或,有1出1,無1出0,比直接+1運算快
          sum[point]=sum[point<<1]+sum[point<<1|1];//左右節點相加
          }

          void pushdown(int point,int len)
          {
          if(lazy[point])//表示有過懶惰標記,進行下面的push將其他下面的節點進行更新
          {
          lazy[point<<1]+=lazy[point];
          lazy[point<<1|1]+=lazy[point];
          sum[point<<1]+=lazy[point]*(len-(len>>1));
          sum[point<<1|1]+=lazy[point]*(len>>1);
          lazy[point]=0;//用完后取消標記
          }
          }

          //left,r,1,n,1,up)
          void update(int x,int y,int left,int right,int point,int up)
          {
          if(x<=left&&y>=right)
          {
          sum[point]+=up*(right-left+1);
          lazy[point]+=up;//lazy標記改變量
          return;
          }
          pushdown(point,right-left+1);
          int mid=(left+right)/2;
          if(x<=mid)
          update(x,y,left,mid,point<<1,up);
          if(y>mid)
          update(x,y,mid+1,right,point<<1|1,up);
          sum[point]=sum[point<<1]+sum[point<<1|1];
          }

          //left,r,1,n,1
          ll query(int x,int y,int left,int r,int point)
          {
          //x,y是題目給定需要求的區間
          //left和r是題目原有區間
          if(x<=left&&y>=r)//和區間沒有交集
          return sum[point];
          pushdown(point,r-left+1);
          int mid=(left+r)/2;
          ll sum=0;
          if(x<=mid)
          sum=query(x,y,1,mid,point<<1);
          if(y>mid)
          sum+=query(x,y,mid+1,r,point<<1|1);
          return sum;
          }
          int main()
          {
          ios();
          cin();
          cout();
          int n,m;
          while(cin>>n>>m)
          {
          mem1(sum);
          mem2(lazy);
          build(1,n,1);//開始建樹
          //傳入左區間、右區間、根節點
          while(m--)
          {
          string ss;
          int left,r,up;
          cin>>ss;
          if(ss[0]=='Q')
          {
          cin>>left>>r;
          cout<<query(left,r,1,n,1)<<endl;;
          }

          else if(ss[0]=='C')
          {
          cin>>left>>r>>up;//up是插入的數字量
          update(left,r,1,n,1,up);
          }
          }
          }
          return 0;
          }

          標簽:poj-
          上一篇:npm淘寶鏡像
          下一篇:ubuntu 安裝jdk

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          100萬日元在日本人眼里算多嗎?很多人認為100萬日元兌換成大約是6萬元,應該不是很多錢。這只是一個完全錯誤的想法。我也是這么想的,因為日本收入高,物價低。但是,當你接觸到年輕一代的日本人,和日劇的情節進行交叉對比,你會發現,實際的100萬日元真的不是一筆小數目。首先,日本人不 他們沒有像人那樣存錢買房的習慣,所以每個月花在租房上的錢占了他們收入的很大一部分。其次,日本服務的價格都很高,每個月想省...

          vivo小布同學怎么喚醒?1/4點擊小布再打開手機設置界面,然后點擊Breeno選項。2/4點擊語音在小布設置界面然后點擊Breeno語音選項。3/4你選擇沉睡在新界面再點上方語音操控選項。4/4自動打開功能在新界面再開啟語音喚醒功能,即可結束。vivo手機怎么打開語音助手?伴隨著科學技術的高速發展,我們的手機更新換代很快地,新的功能,新的使用層出不窮,有些時候一些使用技巧我們都需要慢慢慢慢才能能...

          蘋果手機為新的iphone做準備怎么用?新入手的iPhone,提前開啟這四項功能,讓手機能用幾次。1.應用資源庫APP資源庫加入蘋果 s ios 14系統,可以自動整理應用和文件。綜上,桌面看起來更干凈,找應用更方便。但是很多人反映用起來不是很方便。但是現在對于app資源庫來說,加入了全新的分屏模式,查看APP資源庫方便了很多。2.聚焦模式必須開啟專注模式,這樣可以讓你更高效專注的處理一些事情。您...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>