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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

HDU - 6315 Naive Operations(线段树+思维)

發布時間:2024/4/11 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU - 6315 Naive Operations(线段树+思维) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:給出一個數列 a 和一個數列 b ,其中數列 a 初始時全部為 0 ,數列 b 初始時是一個 1 ~ n 的排列,接下來共有 m 次操作,每次操作分為兩種:

  • add l r :在區間 [ l , r ] 內的 a[ i ] 都加上 1
  • query l r :查詢區間 [ l , r ] 內的所有 ?之和
  • 題目分析:如果直接維護 a[ i ] / b[ i ] 的話可能不太好維護,但是我們可以反向思考,對于數列 b 維護一個線段樹,每個節點維護一個 mmin 和一個 sum,分別代表區間內的最小值以及當前區間的貢獻,這個最小值代表的是:當前區間至少還需要進行多少次 add 操作才會產生貢獻,因為初始時每個葉子結點的 mmin 都將其賦值為 b[ i ] ,這樣每次執行 add 操作時,如果 mmin > 1 的話,那么直接讓 mmin 減一即可,如果 mmin = 1 的話,說明當前區間中,存在葉子結點經過此次 add 后悔變成 0 ,也就是 a[ i ] / b[ i ] 可以多貢獻 1 了,對于所有 mmin = 1 的區間,繼續向下遞歸,直到葉子結點位置,此時將葉子結點的 mmin 重新賦值為 b[ i ] ,并且將 sum 加一就好了

    因為是區間修改和區間查詢,所以需要加一個 lazy 標記

    代碼:
    ?

    #include<iostream> #include<cstdio> #include<string> #include<ctime> #include<cmath> #include<cstring> #include<algorithm> #include<stack> #include<climits> #include<queue> #include<map> #include<set> #include<sstream> #include<cassert> using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=1e5+100;struct Node {int l,r,mmin,sum,lazy; }tree[N<<2];int a[N];void pushup(int k) {tree[k].mmin=min(tree[k<<1].mmin,tree[k<<1|1].mmin);tree[k].sum=tree[k<<1].sum+tree[k<<1|1].sum; }void pushdown(int k) {if(tree[k].lazy){int lz=tree[k].lazy;tree[k].lazy=0;tree[k<<1].lazy+=lz;tree[k<<1].mmin+=lz;tree[k<<1|1].lazy+=lz;tree[k<<1|1].mmin+=lz;} }void build(int k,int l,int r) {tree[k].l=l;tree[k].r=r;tree[k].sum=tree[k].lazy=0;if(l==r){tree[k].mmin=a[l];return;}int mid=l+r>>1;build(k<<1,l,mid);build(k<<1|1,mid+1,r);pushup(k); }void update(int k,int l,int r) {if(tree[k].r<l||tree[k].l>r)return;if(tree[k].l>=l&&tree[k].r<=r){if(tree[k].mmin>1){tree[k].mmin--;tree[k].lazy--;return;}else if(tree[k].l==tree[k].r){tree[k].mmin=a[tree[k].l];tree[k].sum++;return;}}pushdown(k);update(k<<1,l,r);update(k<<1|1,l,r);pushup(k); }int query(int k,int l,int r) {if(tree[k].r<l||tree[k].l>r)return 0;if(tree[k].l>=l&&tree[k].r<=r)return tree[k].sum;pushdown(k);return query(k<<1,l,r)+query(k<<1|1,l,r); }int main() { #ifndef ONLINE_JUDGE // freopen("input.txt","r",stdin); // freopen("output.txt","w",stdout); #endif // ios::sync_with_stdio(false);int n,m;while(scanf("%d%d",&n,&m)!=EOF){for(int i=1;i<=n;i++)scanf("%d",a+i);build(1,1,n);while(m--){char s[10];int l,r;scanf("%s%d%d",s,&l,&r);if(s[0]=='a')update(1,l,r);elseprintf("%d\n",query(1,l,r));}}return 0; }

    ?

    總結

    以上是生活随笔為你收集整理的HDU - 6315 Naive Operations(线段树+思维)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 天海翼av在线 | 成年人免费大片 | 国产探花在线精品一区二区 | 拍真实国产伦偷精品 | 日韩网红少妇无码视频香港 | 国产婷婷色 | 日日射天天操 | 小sao货水好多真紧h无码视频 | 不卡一区二区在线 | 在线观看国产一级片 | 亚洲精品三 | 高清一区二区三区视频 | 18欧美性xxxx极品hd | 狠狠成人 | 日本污污网站 | 一区二区三区四区久久 | 一级片成人 | 日韩国产欧美在线观看 | 久久人人视频 | 日本伦理中文字幕 | 成 人 免费 黄 色 | 羞羞漫画在线播放 | 免费观看黄色一级视频 | 国产午夜无码精品免费看奶水 | 肥熟女一区二区三肥熟女 | mm131国产精品 | 毛片在线视频播放 | 国产精成人| 欧美激情视频在线观看 | 国产一区二区免费在线观看 | 一区二区久久 | 欧美自拍区 | 青青操网 | 亚欧三级| 久久久免费高清视频 | 欧美又黑又粗 | 黄色一级大片在线免费看国产 | 粉嫩一区二区三区 | 国产一区精品视频 | 精品一区二区在线播放 | 日韩一区二区三区免费在线观看 | 一区二区三区四区欧美 | 中文字幕在线免费视频 | 欧美日韩一区二区三区电影 | 欧美 日韩 国产 一区二区三区 | 国产精品国产三级国产aⅴ下载 | jizz国产在线观看 | 在线免费你懂的 | 91精品视频网站 | 久久久久久久9 | 任我爽在线 | 欧美在线高清 | 久久久噜噜噜久久 | 同性色老头性xxxx老头 | 天天摸夜夜爽 | 久久久一区二区 | 超碰97在线看 | 午夜福利电影一区二区 | 男女啪啪十八 | 亚洲欧美日韩国产一区二区 | 黄色一及毛片 | 黄视频网站在线 | 国产精品久久久久久人妻精品动漫 | 国产永久免费无遮挡 | 免费看av毛片 | 国产农村妇女毛片精品久久麻豆 | 日本一区二区免费高清视频 | 伊人精品在线 | 正在播放木下凛凛88av | 久久久一区二区三区四区 | 黄色免费大片 | www 在线观看视频 | 欧美无遮挡 | 精品99久久久久成人网站免费 | 日韩精品一区二区亚洲av观看 | 亚洲另类色综合网站 | 中文字幕一区二区三区乱码人妻 | 欧美国产日韩一区二区 | 黄色动漫软件 | 污片免费网站 | 国产尤物视频在线观看 | 色噜噜日韩精品欧美一区二区 | 国产手机在线观看 | 3级黄色片| 高跟鞋调教—视频|vk | 五月婷婷丁香激情 | 精品黄色片 | 天天想你在线观看完整版电影免费 | 青青视频免费观看 | 久久bb| 日韩中文字幕在线不卡 | 美女网站免费视频 | av在线资源站 | 国产欧美精品aaaaaa片 | www..com国产| 久久免费播放 | 日韩欧美亚洲天堂 | 天天干天天操天天射 | 人人看人人爽 |