思路:主席树搞一搞。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PII pair<int, int>
#define y1 skldjfskldjg
#define y2 skldfjsklejg
using namespace std; const int N = 1e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = ; int hs1[N], hs2[N], mnX[N], mxX[N], mnY[N], mxY[N], tot1, tot2, n;
int root[][N]; struct Point {
int x, y;
Point(int _x = , int _y = ) {
x = _x; y = _y;
}
} a[N]; struct Chairman_tree {
int tot;
struct node {
int sum, l, r;
} a[N * ];
void update(int p, int l, int r, int &x, int y) {
x = ++tot; a[x] = a[y]; a[x].sum++;
if(l == r) return;
int mid = l + r >> ;
if(p <= mid) update(p, l, mid, a[x].l, a[y].l);
else update(p, mid + , r, a[x].r, a[y].r);
}
int query(int L, int R, int l, int r, int x, int y) {
if(L > R) return ;
if(l >= L && r <= R) return a[x].sum - a[y].sum;
int mid = l + r >> , ans = ;
if(L <= mid) ans += query(L, R, l, mid, a[x].l, a[y].l);
if(R > mid) ans += query(L, R, mid + , r, a[x].r, a[y].r);
return ans;
}
} ct[]; int main() {
ct[].tot = ct[].tot = ;
memset(mnX, inf, sizeof(mnX));
memset(mnY, inf, sizeof(mnY));
memset(mxX, , sizeof(mxX));
memset(mxY, , sizeof(mxY));
scanf("%d", &n);
for(int i = ; i <= n; i++) {
scanf("%d%d", &a[i].x, &a[i].y);
hs1[++tot1] = a[i].x;
hs2[++tot2] = a[i].y;
}
sort(hs1 + , hs1 + + tot1);
sort(hs2 + , hs2 + + tot2);
tot1 = unique(hs1 + , hs1 + + tot1) - hs1 - ;
tot2 = unique(hs2 + , hs2 + + tot2) - hs2 - ; for(int i = ; i <= n; i++) {
a[i].x = lower_bound(hs1 + , hs1 + + tot1, a[i].x) - hs1;
a[i].y = lower_bound(hs2 + , hs2 + + tot2, a[i].y) - hs2;
mnX[a[i].x] = min(mnX[a[i].x], a[i].y);
mxX[a[i].x] = max(mxX[a[i].x], a[i].y);
mnY[a[i].y] = min(mnY[a[i].y], a[i].x);
mxY[a[i].y] = max(mxY[a[i].y], a[i].x);
} for(int i = ; i <= tot2; i++) {
ct[].update(mnY[i], , tot1, root[][i], root[][i - ]);
ct[].update(mxY[i], , tot1, root[][i], root[][i - ]);
} LL ans = ; for(int i = ; i <= tot1; i++) {
ans += mxX[i] - mnX[i] + ;
ans -= ct[].query(i + , tot1, , tot1, root[][mxX[i]], root[][mnX[i]-]);
ans -= ct[].query(, i - , , tot1, root[][mxX[i]], root[][mnX[i]-]);
} printf("%lld\n", ans);
return ;
}

bzoj 1818 主席树的更多相关文章

  1. bzoj 1901 主席树+树状数组

    修改+查询第k小值 单纯主席树修改会打乱所有,所以再套一个树状数组维护前缀和使得修改,查询都是log 对了,bzoj上不需要读入组数,蜜汁re.. #include<cstdio> #in ...

  2. BZOJ 2588 主席树

    思路: 主席树 做完BZOJ 3123 觉得这是道水啊-- 然后狂RE 狂MLE 要来数据 忘把deep[1]设成1了----------. 啊wocccccccccccccccc //By Siri ...

  3. BZOJ 4771 主席树+倍增+set

    思路: 因为有深度的限制,并且我们是在线段树上维护权值,所以我们把点按照dep排序,然后一个一个修改...主席树的下标就是dfs序,子树的查询就是区间查询... 但是发现这样怎么去维护LCA呢...因 ...

  4. BZOJ 3674/BZOJ 3673 主席树

    思路: 主席树维护可持久化数组 剩下的就是普通的并查集了- //By SiriusRen #include <cstdio> #include <cstring> #inclu ...

  5. BZOJ 3123 主席树 启发式合并

    思路: 主席树 搞树上的k大 x+y-lca(x,y)-fa(lca(x,y)) 按照size小树往大树上插 启发式合并 n*log^2n的 搞定~ //By SiriusRen #include & ...

  6. BZOJ 4448 主席树+树链剖分(在线)

    为什么题解都是离线的-- (抄都没法抄) 搞一棵主席树 1 操作 新树上的当前节点设成1 2 操作 查max(i-xx-1,0)那棵树上这条路径上有多少个点是1 让你找经过了多少个点 查的时候用dee ...

  7. BZOJ 3524主席树裸题 (雾)

    思路: 按权值建一棵主席树 (但是这好像不是正解 空间复杂度是不对的--.) //By SiriusRen #include <cstdio> #include <cstring&g ...

  8. BZOJ 3524 - 主席树

    传送门 题目分析 标准主席树,按照位置插入每个数,对于询问l, r, 在l-1,r两树上按照线段树搜索次数大于(r - l + 1) / 2的数. code #include<bits/stdc ...

  9. BZOJ 3932 - 主席树

    传送门 题目分析 在只打会主席树模板的情况下做了这道题,也算是深有体会. 首先任务可以差分:一个任务是(s, e, p), 则在s处+1, 在e+1处-1,符合前缀.但是我们要查询指定时间的前k任务之 ...

随机推荐

  1. String的indexOf方法

    indexOf(String.indexOf 方法)字符串的IndexOf()方法搜索在该字符串上是否出现了作为参数传递的字符串,如果找到字符串,则返回字符的起始位置 (0表示第一个字符,1表示第二个 ...

  2. mysql5.7 安装常见问题

    mysql 5.7安装要执行以下三个命令: 1.mysql install2.mysqld --initialize3.net start mysql 第一个命令可能会出现Install/Remove ...

  3. springboot创建maven多模块项目

    SpringBoot创建maven多模块项目 项目结构 该项目名称为springboot-maven-multi,由springboot-maven-multi.user-dao.user-domai ...

  4. 哪些window你不知道的却实用的小技巧----window小技巧

    前言 一直想要整理一篇有关于window比较全的使用小技巧,却又不知道从哪里开始写起.而让我准备动手写这边随笔的动力,还是在加入虫部落<一个绿色环保,充满朝气的好地方>,从大家的分享中,我 ...

  5. spring boot 2.0.3+spring cloud (Finchley)4、熔断器Hystrix

    在分布式系统中服务与服务之间的依赖错综复杂,一种不可避免的情况就是某些服务会出现故障,导致依赖于他们的其他服务出现远程调度的线程阻塞.某个服务的单个点的请求故障会导致用户的请求处于阻塞状态,最终的结果 ...

  6. UVA 818 Cutting Chains

    https://vjudge.net/problem/UVA-818 题意: 有n个圆环,其中有一些已经扣在了一起.现在需要打开尽量少的圆环,使得所有圆环可以组成一条链 n<=15 因为n< ...

  7. 12款jQuery幻灯片插件和幻灯片特效教程

    jQuery 使用简单灵活,同时还有许多成熟的插件可供选择,它可以帮助你在项目中加入一些非常好的效果.滑块和幻灯片效果是常用的内容展示方式之一,这是一种在有限的网页空间内展示系列项目时非常好的方法.今 ...

  8. JavaScript定义类的几种方式

    提起面向对象我们就能想到类,对象,封装,继承,多态.在<javaScript高级程序设计>(人民邮电出版社,曹力.张欣译.英文名字是:Professional JavaScript for ...

  9. SQL Server 高级SQL

    查询view 的列和列数据类型 SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'vi ...

  10. arch点击硬盘无法挂载

    出现问题如下 在使用xfce4桌面的时候在点击硬盘图标时可以挂载虽然要求你输入root密码 但是在使用openbox的时候点击硬盘图标却出现如下提示,权限的问题 Not authorized to p ...