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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

BZOJ 4066 简单题 ——KD-Tree套替罪羊树

發布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ 4066 简单题 ——KD-Tree套替罪羊树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【題目分析】

? ? 直接x,y二維輪番劃分,暴力即可。

? ? 套上替罪羊,打碎重構,對于時間復雜度有了保證。

? ? 寫起來好麻煩,重構的技巧很棒!

【代碼】

#include <cstdio> #include <cstring> #include <iostream> #include <algorithm>using namespace std;#define maxn 200005 #define inf 0x3f3f3f3f #define lim 0.7 #define L t[o].c[0] #define R t[o].c[1] #define mid (l+r>>1) #define F(i,j,k) for (int i=j;i<=k;++i)struct node{int d[2],c[2];int mx[2],mn[2],sum,v,siz,D;int& operator [] (int x){return d[x];} }t[maxn],now; int p[maxn]; int opt=0,D,rt=0,ans=0,tot=0,cnt; inline bool cmp(int x,int y){return t[x][D]<t[y][D];} void pushup(int k) {for (int i=0;i<2;++i){t[k].mn[i]=min(t[t[k].c[0]].mn[i],min(t[t[k].c[1]].mn[i],t[k].mn[i]));t[k].mx[i]=max(t[t[k].c[0]].mx[i],max(t[t[k].c[1]].mx[i],t[k].mx[i]));}t[k].sum=t[t[k].c[0]].sum+t[t[k].c[1]].sum+t[k].v;t[k].siz=t[t[k].c[0]].siz+t[t[k].c[1]].siz+1; } inline int build(int l,int r,int dir){D=dir;nth_element(p+l,p+mid,p+r+1,cmp);int o=p[mid];t[o].D=dir;F(i,0,1) t[o].mn[i]=t[o].mx[i]=t[o][i];t[o].sum=t[o].v;L=l<mid ? build(l,mid-1,dir^1) : 0;R=mid<r ? build(mid+1,r,dir^1) : 0;pushup(o);return o; } inline void dfs(int o){if (!o) return;dfs(L);p[++cnt]=o;dfs(R); } inline void rebuild(int &o){cnt=0;dfs(o);o=build(1,cnt,t[o].D); }void ins(int &o,int dir) {if (!o){o=++tot;t[o]=now;for (int i=0;i<2;++i) t[o].mn[i]=t[o].mx[i]=t[o].d[i];t[o].siz=1;t[o].D=dir;t[o].sum=t[o].v;return ;}if (now.d[dir]<t[o].d[dir]){ins(t[o].c[0],dir^1);pushup(o);if ((double)t[t[o].c[0]].siz>(double)t[o].siz*lim) rebuild(o);}else{ins(t[o].c[1],dir^1);pushup(o);if ((double)t[t[o].c[1]].siz>(double)t[o].siz*lim) rebuild(o);} }void print(int o){if (!o) return;printf("%d t[o].mn[0]=%d t[o].mn[1]=%d t[o].mx[0]=%d t[o].mx[1]=%d\n",o,t[o].mn[0],t[o].mn[1],t[o].mx[0],t[o].mx[1]);print(L);print(R); }int query(int o,int x1,int y1,int x2,int y2) {if (!o) return 0;if (t[o].mn[0]>=x1 && t[o].mn[1]>=y1 && t[o].mx[0]<=x2 && t[o].mx[1]<=y2)return t[o].sum;else{int ret=0;if (t[o].d[0]>=x1&&t[o].d[0]<=x2&&t[o].d[1]>=y1&&t[o].d[1]<=y2)ret+=t[o].v;if (t[t[o].c[0]].mn[0]>x2||t[t[o].c[0]].mx[0]<x1||t[t[o].c[0]].mn[1]>y2||t[t[o].c[0]].mx[1]<y1);else ret+=query(t[o].c[0],x1,y1,x2,y2);if (t[t[o].c[1]].mn[0]>x2||t[t[o].c[1]].mx[0]<x1||t[t[o].c[1]].mn[1]>y2||t[t[o].c[1]].mx[1]<y1);else ret+=query(t[o].c[1],x1,y1,x2,y2);return ret;} }int main() {for (int i=0;i<2;++i) t[rt].mx[i]=-inf,t[rt].mn[i]=inf;t[rt].siz=t[rt].sum=t[rt].v=0; scanf("%*d");while (scanf("%d",&opt)!=EOF&&opt!=3){if (opt==1){scanf("%d%d%d",&now.d[0],&now.d[1],&now.v);now.d[0]^=ans; now.d[1]^=ans; now.v^=ans;ins(rt,1);}else{int x1,y1,x2,y2;scanf("%d%d%d%d",&x1,&y1,&x2,&y2);x1^=ans;y1^=ans;x2^=ans;y2^=ans;printf("%d\n",ans=query(rt,x1,y1,x2,y2));}} }

  

轉載于:https://www.cnblogs.com/SfailSth/p/6231276.html

總結

以上是生活随笔為你收集整理的BZOJ 4066 简单题 ——KD-Tree套替罪羊树的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 精品国产一区二区三 | 精品欧美一区二区久久久久 | 欧美性视屏 | 禁断介护老人中文字幕 | 天天做日日做 | 亚洲精品2| 婷婷五月综合久久中文字幕 | 性中文字幕 | 色吧av | 女人一区二区三区 | 影音先锋美女 | 国产在线高清 | 天堂√8在线中文 | 91日本在线观看 | 午夜视频在线看 | 亚洲免费视频观看 | 开心激情五月网 | 久久久久国产精品区片区无码 | 毛片视频观看 | 亚洲永久精品一区 | 麻豆网站在线 | 鲁丝一区二区三区 | 这里只有精品22 | 亚洲综合网站 | 日本在线网站 | 宅男视频污 | 成人中文字幕+乱码+中文字幕 | 国产精品伦一区 | 91伊人| 精品久久久久久 | 91网站在线免费观看 | 国产激情一区二区三区 | 91青草视频| 国产精品久久毛片av大全日韩 | 天天插天天操 | 日日夜夜91 | 国产日韩精品中文字无码 | 精人妻无码一区二区三区 | 性折磨bdsm欧美激情另类 | 成人1区 | 色天天av| 国产高潮视频 | 少妇人妻一区二区三区 | 精品免费av | 亚洲视频网址 | 亚洲午夜色 | 91精彩视频在线观看 | 天堂va蜜桃一区二区三区 | 亚洲乱码电影 | 成人免费一区二区三区在线观看 | 精品人妻一区二区乱码 | 日本福利一区 | 国产精品女人久久久 | 日本老妇性生活 | 美女av网 | 国产又粗又大又爽视频 | 干一夜综合 | 欧美第三页 | 亚洲最新中文字幕 | 色老头在线视频 | 日韩免费观看视频 | 欧美熟妇久久久久 | 欧美巨大另类极品videosbest | 日本精品在线视频 | 无码精品人妻一区二区三区湄公河 | 青青草91视频 | 男女视频在线观看 | 日本成人三级电影 | 国产精品一区二区三区四区五区 | 日韩av图片 | 在线看黄网站 | 香蕉综合视频 | 久久伊人免费 | 偷看洗澡一二三区美女 | 91精品国产91久久久久久久久久久久 | 精品少妇视频 | 黑人无套内谢中国美女 | 亚洲人体视频 | 国产日韩一级片 | 超碰人人人人人人 | 欧美日韩一二三四 | 超清av在线| 波多野结衣视频网址 | 精品777| 国产成人高清在线 | 欧美性吧| 一区二区日韩在线观看 | 午夜在线影院 | 成人精品一区日本无码网 | 女儿的朋友在线播放 | 亚洲第一看片 | 成人欧美一区二区三区黑人 | 一区二区三区四区免费 | 天天操天天干天天摸 | 91新视频| 成人性生交视频免费观看 | 亚州色图欧美色图| 成人深夜视频在线观看 | 亚洲精品免费视频 |