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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

BZOJ3262/Luogu3810 陌上花开 (三维偏序,CDQ)

發布時間:2025/5/22 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ3262/Luogu3810 陌上花开 (三维偏序,CDQ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個下午的光陰之死,兇手是細節與手殘。
致命的一槍:BIT存權值時:

for(; x <= maxx; x += x&-x) t[x] += w;//for(; x <= n; x += x&-x) t[x] += w;// You died int n; int maxx;struct Element{int a,b,c;long long ans;int siz;bool operator< (const Element &com)const{if(a != com.a) return a < com.a;if(b != com.b) return b < com.b;return c < com.c;} }a[N],tmp[N];long long t[N]; inline void Updata(int x, int w){for(; x <= maxx; x += x&-x) t[x] += w;//for(; x <= n; x += x&-x) t[x] += w;// You died } inline long long Query(int x){long long s = 0;for(; x; x -= x&-x) s += t[x];return s; }inline void CDQ(int l,int r){if(l == r){a[l].ans += a[l].siz - 1;return;}int mid = (l + r) >> 1;CDQ(l, mid), CDQ(mid + 1, r);int i = l, j = mid + 1, k = l;while(i <= mid && j <= r){if(a[i].b <= a[j].b){Updata(a[i].c, a[i].siz);tmp[k++] = a[i++];}else{a[j].ans += Query(a[j].c);tmp[k++] = a[j++];}}while(j <= r) a[j].ans += Query(a[j].c), tmp[k++] = a[j++];R(j, l, i - 1) Updata(a[j].c, -a[j].siz);while(i <= mid) tmp[k++] = a[i++];R(i,l,r) a[i] = tmp[i]; }long long tot[N]; int main(){ // freopen("In.txt","r",stdin); // freopen("OUT.txt","w",stdout);io >> n >> maxx;R(i,1,n){io >> a[i].a >> a[i].b >> a[i].c;}sort(a + 1, a + n + 1);int cnt = 0;R(i,1,n){if(a[i].a == a[i-1].a && a[i].b == a[i-1].b && a[i].c == a[i-1].c && i != 1){++a[cnt].siz;}else{a[++cnt] = a[i];a[cnt].siz = 1;}}CDQ(1, cnt);R(i,1,cnt){tot[a[i].ans] += a[i].siz;}--n;R(i,0,n){printf("%lld\n", tot[i]);}return 0; }

轉載于:https://www.cnblogs.com/bingoyes/p/11181554.html

總結

以上是生活随笔為你收集整理的BZOJ3262/Luogu3810 陌上花开 (三维偏序,CDQ)的全部內容,希望文章能夠幫你解決所遇到的問題。

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