BZOJ 2212: [Poi2011]Tree Rotations
来源:互联网 发布:淘宝虚拟产品有什么 编辑:程序博客网 时间:2024/05/18 02:36
在线段树合并的过程中算逆序对个数 然后判断是否需要交换即可
#include<bits/stdc++.h>using namespace std;typedef long long LL;const int N=400002;inline int read(){ char ch=getchar(); int x=0,f=1; while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0'; ch=getchar();} return x*f;}int u,v[N],l[N],r[N],ls[N*10],rs[N*10],s[N*10],rt[N],tot;LL ans,c1,c2;void rtree(int x){ v[x]=read(); if(!v[x]){ l[x]=++u,rtree(l[x]); r[x]=++u,rtree(r[x]); }}void bulid(int &x,int l,int r,int c){ if(!x)x=++tot; if(l==r){s[x]=1; return;} int mid=(l+r)>>1; if(c<=mid)bulid(ls[x],l,mid,c); else bulid(rs[x],mid+1,r,c); s[x]=s[ls[x]]+s[rs[x]];}void merge(int &x,int y){ if(!x){x=y; return;} if(!y)return; c1+=(LL)s[rs[x]]*s[ls[y]]; c2+=(LL)s[ls[x]]*s[rs[y]]; merge(ls[x],ls[y]); merge(rs[x],rs[y]); s[x]=s[ls[x]]+s[rs[x]];}void solve(int x){ if(!x)return; solve(l[x]),solve(r[x]); if(!v[x]){ c1=c2=0; merge(rt[l[x]],rt[r[x]]),rt[x]=rt[l[x]]; ans+=min(c1,c2); }}int main(){ int n=read(),i; tot=0,u=1; rtree(1); for(i=1;i<=u;i++) if(v[i])bulid(rt[i],1,n,v[i]); solve(1); printf("%lld\n",ans); return 0;}
1 0
- BZOJ 2212: [Poi2011]Tree Rotations
- bzoj 2212: [Poi2011]Tree Rotations
- BZOJ 2212([Poi2011]Tree Rotations-启发式合并)
- 2212: [Poi2011]Tree Rotations
- bzoj 2212: [Poi2011]Tree Rotations 线段树合并
- bzoj 2212: [Poi2011]Tree Rotations (线段树)
- bzoj 2212 [Poi2011]Tree Rotations(线段树合并)
- BZOJ 2212: [Poi2011]Tree Rotations 线段树合并
- BZOJ 2212 [Poi2011]Tree Rotations 线段树合并
- bzoj-2212 Tree Rotations
- BZOJ3702/2212 [Poi2011]Tree Rotations/二叉树
- 2212: [Poi2011]Tree Rotations/3702: 二叉树
- [BZOJ2212][Poi2011]Tree Rotations
- 【bzoj2212】 [Poi2011]Tree Rotations
- [Poi2011]Tree Rotations 解题报告
- BZOJ2212&3702: [Poi2011]Tree Rotations
- 【BZOJ】【P2212&P3702】【Poi2011】【Tree Rotations】【二叉树】【题解】【启发式合并】
- 【POI2011】Tree Rotations(线段树合并)
- Linux shell字符串截取与拼接
- The 17th Zhejiang University Programming Contest(solved 8 of 10)
- PostCSS入门:Sass用户入门指南
- [Eclipse]
- mysql中如何设置某字段Key 为MUL
- BZOJ 2212: [Poi2011]Tree Rotations
- crc32 算法与实现
- input change 方法失效问题处理
- git 仓库地址切换本地代码切换到新的git 仓库上
- 在局域网内搭建外网能访问的网站
- Android 动画详解
- construct2读取xml
- POJ 1083 Moving Tables(贪心)
- ajax遍历Map<String, String>转JSONArray