博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 3545 peaks (离线版&&在线版)
阅读量:4981 次
发布时间:2019-06-12

本文共 1282 字,大约阅读时间需要 4 分钟。

离线版

首先将询问和加边一起排个序

对每个节点建一棵主席树,连边时主席树合并即可

#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long ll;const int maxn = 1000010;int n,m,q;int a[maxn],b[maxn],fa[maxn],rt[maxn],ans[maxn],p,tot;struct Node{ int sz,ls,rs;}t[maxn<<2];struct Q{ int a,b,c,ok,id;}c[maxn<<2];int find(int x){ return x==fa[x]?x:fa[x]=find(fa[x]); }bool cmp(Q a,Q b){ if(a.c==b.c) return a.ok
'9'){ if(ch=='-') f=-1; ch=getchar(); } while(ch>='0' && ch<='9'){ s=s*10+ch-'0'; ch=getchar(); } return s*f;}int main(){ n=read(),m=read(),q=read(); for(int i=1;i<=n;i++) a[i]=read(),b[i]=a[i],fa[i]=i; sort(b+1,b+1+n); p=unique(b+1,b+1+n)-b-1; for(int i=1;i<=n;i++) a[i]=lower_bound(b+1,b+1+p,a[i])-b; for(int i=1;i<=m;i++) c[i].a=read(),c[i].b=read(),c[i].c=read(),c[i].ok=0; for(int i=m+1;i<=m+q;i++) c[i].a=read(),c[i].c=read(),c[i].b=read(),c[i].ok=1,c[i].id=i-m; sort(c+1,c+1+m+q,cmp); for(int i=1;i<=n;i++) modify(rt[i],1,p,a[i]); for(int i=1;i<=m+q;i++){ if(c[i].ok==0){ int u=find(c[i].a),v=find(c[i].b); if(u!=v){ fa[u]=v; rt[v]=merge(rt[u],rt[v]); } }else{ int u=find(c[i].a); if(t[rt[u]].sz

 

转载于:https://www.cnblogs.com/tuchen/p/10390309.html

你可能感兴趣的文章
MIS外汇平台荣获“2013年全球最佳STP外汇交易商”
查看>>
LeetCode 题解之Add Digits
查看>>
hdu1502 , Regular Words, dp,高精度加法
查看>>
SpringBoot在idea中的热部署配置
查看>>
MyEclipse连接SQL Server 2008数据库的操作方法
查看>>
JS验证图片格式和大小并预览
查看>>
laravel5.2 移植到新服务器上除了“/”路由 ,其它路由对应的页面显示报404错误(Object not found!)———新装的LAMP没有加载Rewrite模块...
查看>>
编写高质量代码--改善python程序的建议(六)
查看>>
windows xp 中的administrator帐户不在用户登录内怎么解决?
查看>>
接口和抽象类有什么区别
查看>>
Codeforces Round #206 (Div. 2)
查看>>
**p
查看>>
优先队列详解
查看>>
VS2012 创建项目失败,,提示为找到约束。。。。
查看>>
设计类图
查看>>
类对象
查看>>
[Voice communications] 声音的滤波
查看>>
软件建模——第9章 毕业论文管理系统—面向对象方法
查看>>
[SDOI2008]洞穴勘测
查看>>
Difference between Linearizability and Serializability
查看>>