洛谷 4219/BZOJ 4530 大融合
4530: [Bjoi2014]大融合
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 990 Solved: 604
[Submit][Status][Discuss]
Description

Input
Output
Sample Input
A 2 3
A 3 4
A 3 8
A 8 7
A 6 5
Q 3 8
Sample Output
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio> inline void read(int & x)
{
int k = ; x = ;
char c = getchar();
while (!isdigit(c))
if (c == '-') c = getchar(), k = -;
else c = getchar();
while (isdigit(c))
x = (x << ) + (x << ) + (c ^ ),
c = getchar();
x *= k;
} const int N = ;
int n, m, tot, x, y, stk_top;
int faz[N], siz[N], tag[N], son[N][], stk[N], bson[N]; char opt; inline int Root(int u)
{
return son[faz[u]][] != u && son[faz[u]][] != u;
} inline char Getchar(void)
{
opt = getchar();
while (opt == ' ' || opt == '\n')
opt = getchar();
return opt;
} void Swap(int & x, int & y)
{
x ^= y, y ^= x, x ^= y;
} inline int Getson(int u)
{
return son[faz[u]][] == u;
} inline void Pushup(int u)
{
if (!u) return;
siz[u] = siz[son[u][]] + siz[son[u][]] + bson[u] + ;
} inline void Pushdown(int u)
{
if (!tag[u] || !u) return;
tag[son[u][]] ^= ,
tag[son[u][]] ^= ,
Swap(son[u][], son[u][]),
tag[u] = ;
} inline void Rotate(int u)
{
int y = faz[u], z = faz[y], ch = Getson(u), b = son[u][ch ^ ];
Pushdown(y), Pushdown(u);
if (!Root(y)) son[z][Getson(y)] = u;
son[u][ch ^ ] = y, son[y][ch] = b;
faz[u] = z, faz[b] = y, faz[y] = u;
Pushup(y), Pushup(u);
} inline void Splay(int u)
{
int cur = u; stk[stk_top = ] = u;
while (!Root(cur)) stk[++stk_top] = cur = faz[cur];
while (stk_top) Pushdown(stk[stk_top--]);
while (!Root(u))
{
if (!Root(faz[u]))
if (Getson(u) == Getson(faz[u])) Rotate(faz[u]);
else Rotate(u);
Rotate(u);
}
} inline void Access(int u)
{
for (int ch = ; u; u = faz[ch = u])
Splay(u), bson[u] += siz[son[u][]] - siz[ch], son[u][] = ch, Pushup(u);
} inline void Mkrt(int u)
{
Access(u), Splay(u), tag[u] ^= ;
} inline void Split(int a, int b)
{
Mkrt(a), Access(b), Splay(b);
} inline void Link(int a, int b)
{
Mkrt(a), Mkrt(b);
faz[a] = b, bson[b] += siz[a], Pushup(b);
} inline void Get(int a, int b)
{
Mkrt(a), Mkrt(b);
printf("%lld\n", (long long)siz[a] * (siz[b] - siz[a]));
} int main()
{
read(n), read(m);
for (int i = ; i <= n; ++i) siz[i] = ;
for (int i = ; i <= m; ++i)
{
opt = Getchar(), read(x), read(y);
if (opt == 'Q') Get(x, y);
if (opt == 'A') Link(x, y);
}
return ;
}
洛谷 4219/BZOJ 4530 大融合的更多相关文章
- 【洛谷4219】[BJOI2014]大融合(线段树分治)
题目: 洛谷4219 分析: 很明显,查询的是删掉某条边后两端点所在连通块大小的乘积. 有加边和删边,想到LCT.但是我不会用LCT查连通块大小啊.果断弃了 有加边和删边,还跟连通性有关,于是开始yy ...
- bzoj 4530 大融合 —— LCT维护子树信息
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4530 用LCT维护子树 size,就是实边和虚边分开维护: 看博客:https://blog ...
- 【洛谷 P4219】 [BJOI2014]大融合(LCT)
题目链接 维护子树信息向来不是\(LCT\)所擅长的,所以我没搞懂qwq 权当背背模板吧.Flash巨佬的blog里面写了虽然我没看懂. #include <cstdio> #define ...
- 洛谷 4106 / bzoj 3614 [HEOI2014]逻辑翻译——思路+类似FWT
题目:https://www.luogu.org/problemnew/show/P4106 https://www.lydsy.com/JudgeOnline/problem.php?id=3614 ...
- 洛谷 P2827 BZOJ 4721 UOJ #264 蚯蚓
题目描述 本题中,我们将用符号表示对c向下取整,例如:. 蛐蛐国最近蚯蚓成灾了!隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓. 蛐蛐国里现在共有n只蚯蚓(n为正整数).每只 ...
- 洛谷 P2155 BZOJ 2186 codevs 2301 [SDOI2008]沙拉公主的困惑
题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的 ...
- 洛谷 P2046 BZOJ 2007 海拔(NOI2010)
题目描述 YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作 一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个 ...
- 洛谷 P1494 BZOJ 2038 [2009国家集训队]小Z的袜子(hose)
//洛谷题面字体.排版我向来喜欢,却还没收录这道如此有名的题,BZOJ的题面字体太那啥啦,清橙的题面有了缩进,小标题却和正文字体一致,找个好看的题面咋这么难呐………… //2019年3月23日23:0 ...
- 洛谷 P2056 BZOJ 2743 [HEOI2012]采花
//表示真的更喜欢洛谷的题面 题目描述 萧芸斓是 Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了 n 朵花,花有 c 种颜色(用整数 ...
随机推荐
- 解决import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder;报错的问题
在项目中用到这两个Jar包,但是程序报错. Access restriction: The type BASE64Decoder is not accessible due to restrictio ...
- puthon-进程间通信-队列和管道
********进程间通信-队列和管道******** ****进程间通信-队列和管道 IPC(Inter-Process Communication) ****队列 **概念介绍 创建贡献的进程队列 ...
- 事务&数据库连接池&DBUtils
事务的特性 原子性 指的是 事务中包含的逻辑,不可分割. 一致性 指的是 事务执行前后.数据完整性 隔离性 指的是 事务在执行期间不应该受到其他事务的影响 持久性 指的是 事务执行成功,那么数据应该持 ...
- 基于.NetCore2.1。服务类库采用.Net Standard2.0,兼容.net 4.6.1消息推送服务
基于.NetCore2.1.服务类库采用.Net Standard2.0,兼容.net 4.6.1消息推送服务 https://www.cnblogs.com/ibeisha/p/weixinServ ...
- echarts Hello world 入门
<!DOCTYPE html> <html> <head> <title></title> <script type="te ...
- webpack分开打包和合并打包的瘦身
webpack.config.js 记录一下优化webpack的几个点: 1. devtool: false, //产品阶段不应该有devtool entry: { bundle : pa ...
- Unity3d网格合并
几个不同的物体,在Unity3d中可以将网格合并在一起,用于优化. 在Unity3d中构建临时场景如下:建一C#脚本名为"CombineMeshes",挂在Cube上. Combi ...
- HBase数据模型(2)
HBase数据模型(1) HBase数据模型(2) 1.0 HBase的版本version,是一个用长整型表示的.由Rowkey.Column(列族和列).Version组合在一起称为HBase中的一 ...
- i-nex安装教程
sudo add-apt-repository ppa:i-nex-development-team/stable sudo apt-get updatesudo apt-get i-nex
- Java 方法重载与引用数组类型
1.方法重载 1)方法的签名 方法的签名包含方法名和参数列表 一个类中,不可以有两个方法的签名完全相同,即一个类中不能有两个方法的方法名和参数列表都一样. public class Test{ pu ...