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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

JZOJ 5627. 【NOI2018模拟4.3】paint

發布時間:2025/3/15 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JZOJ 5627. 【NOI2018模拟4.3】paint 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

Input

Output

Sample Input

樣例輸入1

10 10 4
1 6
4 1
6 9
9 4

樣例輸入2

10 10 4
2 2
4 4
7 7
9 9

Sample Output

樣例輸出1

32

樣例輸出2

26

Data Constraint

Solution

  • 先貼上原題題解:

  • 為方便統計答案,先加入兩個邊界點 (0,0)(w,h)

  • 之后將所有點按 X 坐標從小到大排序。

  • 我們對于直線 l:y=h2 ,上下同時維護各一個值遠離逐漸 l 的單調棧。

  • 棧中存著許多線段,線段樹中存著兩個棧元素縱坐標的相反數 ?Y1?Y2

  • 則取出后加上 h 就是對應矩形的寬了。

  • 其中 zjp_shadow的博客 講的很詳細:

  • (虛線 為中線,黑色 是當前單調棧里的,紅色 是現在將過來的一個線段)

  • 我們將兩個棧頂線段的答案進行更改,將這些線段的橫著的答案變小它坐標的相應的差值。

  • 這個就可以直接在線段樹上做加減法就行了。

  • 然后我們用這條 綠色紅色 的線段一起,共同構成一個新的線段存進單調棧中去。

  • 為了同時得到矩形的長,我們把值在減去當前的橫坐標 Xi

  • 之后在查詢時加上目前的橫坐標 Xi+1 ,這樣就得出了對應矩形的長 Xi+1?Xi

  • 這樣也就得到了當前矩形一半周長的最優答案。

  • 注意每做完一個點 i 時,要及時更新答案,并將 i 點的信息單點加到線段樹上。

  • 為了避免 i+1 不能成功進入棧中,需要在棧末尾加入一個極值點 (i,h/0) 來保證入棧。

  • 而對于直線 x=w2 也同理,交換坐標再做一遍即可。

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

Code

#include<cstdio> #include<cstring> #include<algorithm> #include<cctype> using namespace std; const int N=2e5+5; struct data {int x,y; }a[N],f[N<<2],st1[N]/*down*/,st2[N]/*up*/; int w,h,n,ans; int top1,top2,qx,qy,qz; inline int read() {int X=0,w=0; char ch=0;while(!isdigit(ch)) w|=ch=='-',ch=getchar();while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar();return w?-X:X; } inline bool cmp(data x,data y) {return x.x<y.x; } inline int max(int x,int y) {return x>y?x:y; } void change(int v,int l,int r) {if(qx<=l && r<=qy){f[v].x+=qz;f[v].y+=qz;return;}int mid=l+r>>1;if(qx<=mid) change(v<<1,l,mid);if(qy>mid) change(v<<1|1,mid+1,r);f[v].x=max(f[v<<1].x,f[v<<1|1].x)+f[v].y; } inline void solve() {memset(f,top1=top2=0,sizeof(f));sort(a+1,a+1+n,cmp);for(int i=1;i<n;i++){if(a[i].y<=h>>1){int t=i-1;while(top1 && st1[top1].y<a[i].y){qx=st1[top1].x,qy=t,qz=st1[top1].y-a[i].y;change(1,1,n);t=st1[top1--].x-1;}if(t^i-1) st1[++top1]=(data){t+1,a[i].y};}else{int t=i-1;while(top2 && st2[top2].y>a[i].y){qx=st2[top2].x,qy=t,qz=a[i].y-st2[top2].y;change(1,1,n);t=st2[top2--].x-1;}if(t^i-1) st2[++top2]=(data){t+1,a[i].y};}st1[++top1]=(data){i,0};st2[++top2]=(data){i,h};qx=qy=i,qz=h-a[i].x;change(1,1,n);ans=max(ans,f[1].x+a[i+1].x);} } int main() {w=read(),h=read(),n=read();for(int i=1;i<=n;i++) a[i].x=read(),a[i].y=read();a[++n]=(data){0,0};a[++n]=(data){w,h};solve();for(int i=1;i<=n;i++) swap(a[i].x,a[i].y);swap(w,h);solve();printf("%d",ans<<1);return 0; }

總結

以上是生活随笔為你收集整理的JZOJ 5627. 【NOI2018模拟4.3】paint的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 久艹在线播放 | 黄色日韩| 天堂素人| www.555国产精品免费 | 日韩色图一区 | 日韩一道本 | 国产一区自拍视频 | 久久福利国产 | 亚洲欧美另类国产 | 午夜性福利 | 亚洲免费激情视频 | 另类专区成人 | 粉嫩av一区二区夜夜嗨 | 人操人操 | 日本中文字幕影院 | 一女双乳被两男吸视频 | 欧美婷婷精品激情 | 欧美色拍| 亚洲AV无码久久精品色三人行 | 亚洲高清在线观看 | 欧美专区一区 | 国产精品人人 | 欧美午夜精品一区 | 欧美日韩一区精品 | 91精品国产乱码久久久久久久久 | 99色在线视频 | 欧美精品日韩精品 | www插插插| 国产精品国产三级国产aⅴ浪潮 | 少妇日皮视频 | 精品人妻一区二区三 | mm131国产精品 | 久久精品国产99精品国产亚洲性色 | 午夜精品一区二区三区免费视频 | 国产又粗又猛又爽又黄91 | 精品99视频 | 一区二区三区丝袜 | 青青伊人影院 | 在线观看www. | 三级视频网址 | 9191久久 | 日本精品在线播放 | 日韩免费网址 | 精品三级av | 深喉口爆一区二区三区 | 黄网站视频在线观看 | 成人av免费网站 | 欧美xxxx黑人xyx性爽 | 日韩精品视频观看 | 久久精品噜噜噜成人88aⅴ | 成人免费观看a | 欧美 日韩 国产 一区二区三区 | 在线观看黄色的网站 | 黄色午夜 | 久久久在线视频 | 亚洲日本护士毛茸茸 | 91精品国自产在线偷拍蜜桃 | 欧美一级淫片免费视频黄 | 精品少妇一区二区三区免费观看 | 一级做a爰片 | 青青伊人久久 | 中文字幕一区二区三区四区五区 | 男生操女生逼逼 | 国产精品理论在线观看 | 欧美日韩乱国产 | 少妇被躁爽到高潮无码人狍大战 | 亚洲色图校园春色 | 毛片一级片 | 叼嘿视频91 | 久久久91精品 | 国产a√精品区二区三区四区 | 37p粉嫩大胆色噜噜噜 | 男生和女生一起差差差很痛的视频 | aa片在线观看视频在线播放 | 精品国产乱码久久久久久预案 | 午夜网 | 午夜视频在线免费观看 | 国产一在线观看 | 黑人玩弄人妻一区二区三区 | 熟妇高潮一区二区三区 | 五个女闺蜜把我玩到尿失禁 | 日韩免费精品视频 | 法国空姐电影在线观看 | 精品国产乱码久久久久久久 | 国产乱码精品一区二三赶尸艳谈 | 哺乳喂奶一二三区乳 | 99视频免费在线观看 | 国产freexxxx性播放麻豆 | 欧美日韩一区二区三区国产精品成人 | 久久免费视频观看 | 99九九视频| 国产最新自拍视频 | 成人特级毛片69免费观看 | 欧美黄色免费大片 | 捅肌肌 | 欧美黑人一级爽快片淫片高清 | 华人永久免费 | 熟妇人妻无码xxx视频 | 色一情一交一乱一区二区三区 |