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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

5334. 【NOIP2017提高A组模拟8.24】空

發(fā)布時間:2025/3/15 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5334. 【NOIP2017提高A组模拟8.24】空 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Description

Input

Output

Sample Input

3
10 100
1 50
50 100

Sample Output

99

Data Constraint

Solution

  • 首先把每個區(qū)間按左端點從小到大排一遍序。

  • 當做到第 i 個區(qū)間,其左右端點分別為 lr

  • 考慮在前面 i?1 個區(qū)間中找一個(其左右端點設為 lr,顯然有 l<l)與它匹配。

  • 考慮區(qū)間相交和區(qū)間包含這兩種情況:

  • 當區(qū)間相交時:答案即為 (l?l)+(r?r)=l+r?(l+r) ,則應使 l+r 最小。

  • 當區(qū)間包含時:答案即為 (l?l)+(r?r)=r?l?(r?l) ,則應使 r?l 最大。

  • 那么這樣運用貪心的思想,用兩個堆維護兩種情況的最值即可。

  • 注意當堆頂?shù)膮^(qū)間的右端點比當前區(qū)間的左端點小的話(r<l),

  • 說明兩區(qū)間不相交,且以后也不會再相交(l 遞增),彈出堆即可。

  • 時間復雜度 O(N log N)

Code

#pragma GCC optimize(2) #include<cstdio> #include<algorithm> #include<queue> using namespace std; const int N=200001; struct data {int x,y;data(int xx,int yy){x=xx,y=yy;}bool operator <(const data &z)const{return x>z.x;} }; pair<int,int>a[N]; priority_queue<data>q1,q2; inline int read() {int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w; } int main() {freopen("test.in","r",stdin);int n=read(),ans=0;for(int i=1;i<=n;i++) a[i].first=read(),a[i].second=read();sort(a+1,a+1+n);for(int i=1;i<=n;i++){int l=a[i].first,r=a[i].second;while(!q1.empty() && q1.top().y<l) q1.pop();while(!q2.empty() && q2.top().y<l) q2.pop();ans=max(ans,max(q1.empty()?0:l+r-q1.top().x,q2.empty()?0:-q2.top().x-(r-l)));q1.push(data(l+r,r));q2.push(data(-(r-l),r));}printf("%d",ans);return 0; }

總結(jié)

以上是生活随笔為你收集整理的5334. 【NOIP2017提高A组模拟8.24】空的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。