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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

李超线段树 [Heoi2013]Segment

發布時間:2023/12/10 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 李超线段树 [Heoi2013]Segment 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題 D: [Heoi2013]Segment
時間限制: 4 Sec 內存限制: 256 MB
題目描述
要求在平面直角坐標系下維護兩個操作:
1.在平面上加入一條線段。記第i條被插入的線段的標號為i。
2.給定一個數k,詢問與直線 x = k相交的線段中,交點最靠上的線段的編號。

輸入

第一行一個整數n,表示共n 個操作。
接下來n行,每行第一個數為0或1。

若該數為 0,則后面跟著一個正整數 k,表示詢問與直線
x = ((k +lastans–1)%39989+1)相交的線段中交點(包括在端點相交的情形)最靠上的線段的編號,其中%表示取余。若某條線段為直線的一部分,則視作直線與線段交于該線段y坐標最大處。若有多條線段符合要求,輸出編號最小的線段的編號。
若該數為 1,則后面跟著四個正整數 x0, y0, x 1, y 1,表示插入一條兩個端點為
((x0+lastans-1)%39989+1,(y0+lastans-1)%10^9+1)和((x
1+lastans-1)%39989+1,(y1+lastans-1)%10^9+1) 的線段。
其中lastans為上一次詢問的答案。初始時lastans=0。

輸出
對于每個 0操作,輸出一行,包含一個正整數,表示交點最靠上的線段的編號。若不存在與直線相交的線段,答案為0。

樣例輸入
6
1 8 5 10 8
1 6 7 2 6
0 2
0 9
1 4 7 6 7
0 5
樣例輸出
2
0 3
提示
對于100%的數據,1 ≤ n ≤ 10^5 , 1 ≤ k, x0, x1 ≤ 39989, 1 ≤ y0 ≤ y1 ≤ 10^9。

其實這道題就是個板子,李超線段樹。(這個板子就是為了解決這個問題,只不過板子太難了而已,汗顏)

就題論算法把,李超線段樹用來處理向一個區間加有斜率的線段,之后判斷某位置權值最大的線段是哪條之類的問題。而最重要的是多了的insert函數。當分到的區間已屬于這條線段覆蓋的區間是,就要進行更神奇的操作了,去比較當前節點所存的最優線段。先附上代碼。

void insert(int l,int r,int x,int k) {if(!t[x].h)t[x].h=k;if(cmp(t[x].h,k,l))swap(t[x].h,k);if(l==r||a[t[x].h].k==a[k].k)return;int mid=(l+r)/2;double g=(double)(a[t[x].h].b-a[k].b)/(a[k].k-a[t[x].h].k);if(g<l||g>r)return;if(g<=mid)insert(l,mid,x*2,t[x].h),t[x].h=k;else insert(mid+1,r,x*2+1,k); }

因為比較分為兩種情況,完全壓制和在區間內有交點。完全壓制不動或直接修改后返回就好了。而對于相交的就必須求出交點,根據交點的位置(其實也就是判斷那條線段在交點那一邊處于優勢)去修改子區間。
對于這段代碼理解還是有點困難(本蒟蒻太水,自己口胡。。)要把本區間右側較大的線段置成本區間最優(我也不是太懂為什么。。望神犇來解釋),若不懂,手動模擬一下過程即可。
還要注意一些細節:直線斜率是否存在,以及兩條線是否平行。。(RE到死)

#include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #define N 101000 #define ll long long using namespace std; struct node {int l,r,id;double k,b; }a[N]; struct tree{int l,r,h;}t[50000*4]; int n,m; void build(int l,int r,int x) {t[x].l=l;t[x].r=r;if(l==r){t[x].h=0;return;}int mid=(l+r)/2;build(l,mid,x*2);build(mid+1,r,x*2+1); } bool cmp(int x,int y,double l) {if(!x)return 1;double l1=a[x].k*l+a[x].b,l2=a[y].k*l+a[y].b;return l1!=l2?l1<l2:x<y; } int q(int k,int x) {if(t[x].l==t[x].r)return t[x].h;int mid=(t[x].l+t[x].r)/2,tmp;if(k<=mid)tmp=q(k,x*2);else tmp=q(k,x*2+1);return cmp(t[x].h,tmp,k)?tmp:t[x].h; } void insert(int l,int r,int x,int k) {if(!t[x].h)t[x].h=k;if(cmp(t[x].h,k,l))swap(t[x].h,k);if(l==r||a[t[x].h].k==a[k].k)return;int mid=(l+r)/2;double g=(double)(a[t[x].h].b-a[k].b)/(a[k].k-a[t[x].h].k);if(g<l||g>r)return;if(g<=mid)insert(l,mid,x*2,t[x].h),t[x].h=k;else insert(mid+1,r,x*2+1,k); } void c(int k,int x) {if(t[x].l>=a[k].l&&t[x].r<=a[k].r){insert(t[x].l,t[x].r,x,k);return;}int mid=(t[x].l+t[x].r)/2;if(a[k].l<=mid)c(k,x*2);if(a[k].r>mid)c(k,x*2+1); } int main() {scanf("%d",&n);int x1,x2,y1,y2,z,ans=0;build(1,50000,1);while(n--){scanf("%d",&z);if(z==0){scanf("%d",&x1);x1=(x1+ans-1)%39989+1;//out<<x1<<endl;ans=q(x1,1);printf("%d\n",ans);}else{m++;scanf("%d%d%d%d",&x1,&y1,&x2,&y2);x1=(x1+ans-1)%39989+1;x2=(x2+ans-1)%39989+1;y1=(y1+ans-1)%1000000000+1;y2=(y2+ans-1)%1000000000+1;//cout<<x1<<" "<<x2<<" "<<y1<<" "<<y2<<endl;if(x1>x2)swap(x1,x2),swap(y1,y2);if(x1==x2)a[m].k=0,a[m].b=max(y1,y2);else{a[m].k=(double)(y1-y2)/(x1-x2);a[m].b=(double)y1-a[m].k*x1;}a[m].l=x1;a[m].r=x2;a[m].id=m;c(m,1);}} }

轉載于:https://www.cnblogs.com/QTY2001/p/7632656.html

總結

以上是生活随笔為你收集整理的李超线段树 [Heoi2013]Segment的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 久草资源 | 91亚洲国产成人精品性色 | 欧美日韩一区二区在线 | 奇米色777 | 欧美一区二区在线视频观看 | 亚洲视频一区二区在线观看 | 国产精品白浆一区二小说 | 四十路av | 欧美精品欧美极品欧美激情 | 丰满人妻一区二区三区46 | 亚欧在线播放 | 少妇色视频 | 国产xxxx做受性欧美88 | 涩色网站| 亚洲成人精品在线观看 | 91在线精品播放 | 日韩一区二区三区四区五区六区 | 中文字幕一区二区三区在线视频 | 迈开腿让我尝尝你的小草莓 | 一区二区三区视频 | 成人小视频免费 | 亚洲视频一二三 | aaaaaa毛片| 污黄视频在线观看 | porn国产 | 国内精品福利视频 | 上原亚衣在线观看 | 黄色片子看看 | 国产破处视频 | 黄色污污视频网站 | 打开免费观看视频在线播放 | 欧美国产一区二区三区 | 看特级黄色片 | 亚洲精品乱码久久久久久久久久久久 | 超碰免费视 | 日韩aaa | 北条麻妃久久精品 | 日本中文在线播放 | 久久老司机精品视频 | 少妇高潮淫片免费观看 | 国产精品久久久久久久久久久久久久久 | 中文字幕四区 | www.操.com| 人与嘼交av免费 | 国产精品亚洲自拍 | 欧美一a | 亚洲视频在线免费播放 | 91免费观看入口 | 99热网| 亚洲欧美视频二区 | 麻豆av免费在线 | 欧美高清hd | 国产第56页| 狠狠婷婷 | www.成人av.com | 巨骚综合 | 色很久 | 亚洲激情一区二区三区 | 99久久久国产精品免费蜜臀 | 天天射综合 | 日韩一级免费观看 | 国产成人免费片在线观看 | 大咪咪dvd | 国产精品一国产精品 | 精品小视频 | 日韩欧洲亚洲AV无码精品 | 99国内揄拍国内精品人妻免费 | 久草精品视频 | 人人艹在线观看 | 女同另类之国产女同 | 中文字幕第一页在线 | 日韩久久成人 | 国产理论av | 国产精品7 | 公侵犯人妻中文字慕一区二区 | 狠狠艹视频 | 偷偷操99 | av色在线观看 | 亚洲欧美天堂网 | 奇米色婷婷| 久久精品免费观看 | 91精品国产精品 | 国内精品人妻无码久久久影院蜜桃 | 少妇特黄a一区二区三区88av | 色婷婷a| 国产免费的av | 黄色欧美视频 | 久久综合亚洲色hezyo国产 | 国产成人无码精品久在线观看 | 精品视频一区二区三区四区五区 | 精品国产一区二区三区久久久蜜月 | 国产男女猛烈无遮挡免费观看网站 | 亚洲成人影音 | av三级在线观看 | 中文字幕三区 | 亚洲熟妇一区二区三区 | 国产视频在线观看视频 | 九热精品视频 | 国产网站大全 |