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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

cf1108E2 线段树类似扫描线

發布時間:2023/12/10 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cf1108E2 线段树类似扫描线 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/* 有點像掃描線 思路:從左到右枚舉每個點,枚舉到點i時,把所有以i為起點的區間的影響刪去 再加上以i-1為結尾的區間的影響 */ #include<bits/stdc++.h> using namespace std; #define maxn 200005 #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 int n,m,a[maxn]; struct Inv{int l,r;}p[400];int lazy[maxn<<2],Min[maxn<<2]; inline void pushup(int rt){Min[rt]=min(Min[rt<<1],Min[rt<<1|1]); } inline void pushdown(int rt){if(lazy[rt]){lazy[rt<<1]+=lazy[rt];lazy[rt<<1|1]+=lazy[rt];Min[rt<<1]+=lazy[rt];Min[rt<<1|1]+=lazy[rt];lazy[rt]=0; } } void build(int l,int r,int rt){lazy[rt]=0;if(l==r){Min[rt]=a[l];return;}int m=l+r>>1;build(lson);build(rson);pushup(rt); } void update(int L,int R,int l,int r,int rt,int val){if(L<=l && R>=r){Min[rt]+=val,lazy[rt]+=val;return;}pushdown(rt);int m=l+r>>1;if(L<=m)update(L,R,lson,val);if(R>m)update(L,R,rson,val);pushup(rt); } int query(int L,int R,int l,int r,int rt){if(L<=l&&R>=r){return Min[rt];}pushdown(rt);int m=l+r>>1,res=99999999;if(L<=m)res=min(res,query(L,R,lson));if(R>m)res=min(res,query(L,R,rson));pushup(rt);return res; }vector<int>ans[100005]; int main(){cin>>n>>m;for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=1;i<=m;i++)scanf("%d%d",&p[i].l,&p[i].r); int Max=-1,index=0;build(1,n,1);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(p[j].l<=i&&p[j].r>=i){//該區間和當前坐標有關 if(i!=1 && !(p[j].l<=i-1&&p[j].r>=i-1))//和左邊結點無關update(p[j].l,p[j].r,1,n,1,1);//加上這段的值 continue; }ans[i].push_back(j);//算上之前沒算上的區間 if(i==1 || p[j].l<=i-1&&p[j].r>=i-1)update(p[j].l,p[j].r,1,n,1,-1); }int tmp=query(1,n,1,n,1);if(a[i]-tmp>Max){index=i;Max=a[i]-tmp;}}cout << Max << endl;cout << ans[index].size()<<endl;for(int i=0;i<ans[index].size();i++)cout << ans[index][i]<< " ";}

?

轉載于:https://www.cnblogs.com/zsben991126/p/10358094.html

總結

以上是生活随笔為你收集整理的cf1108E2 线段树类似扫描线的全部內容,希望文章能夠幫你解決所遇到的問題。

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