洛谷 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 种颜色(用整数 ...
随机推荐
- 输入apt-get update时出现Could not open lock file /var/lib/apt/lists/lock - open
我看了其它的资料发现不够清楚 我只报这些错误 1.1.ps-aux 查出apt-get进程的PID,通常是一个四位数字. 不好找apt-get进程 输入此代码就好找了 ps -aux|grep apt ...
- Java8 中的 Optional
从 Java 8 引入的一个很有趣的特性是 Optional 类.Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都 ...
- vue路由的四种传值
第一种:props 配置: 组件内定义: props: ['id'] 路由映射配置,开启props:true : { path: '/user/:id', component: User, props ...
- jquery中的$(this)和this
在jquery中,存在$(this)和this. 其中常见的是出现在事件处理函数中. 首先先来理解jquery对象. jquery对象其实就是DOM对象的集合. 比如:$('a')[0];------ ...
- CC10:访问单个节点的删除
题目 实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点. 给定待删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true 解法 这道题并不难,主要是题目中这句话确定 ...
- Hive进阶_Hive的子查询
- 集合中如果含null数据,不可使用not in, 可以使用in- hive只支持where和from子句中的子查询- 主查询和自查询可以不是同一张表 select e.ename from emp ...
- 使用表达式目录树实现SqlDataReader到实体的映射
SqlDataReader映射实体,是ORM的基础功能,常见的实现方式有反射.表达式目录树和emit,这里要说的就是用表达式目录树生成实体的方法. 先分析下思路: 假设有个数据实体类,Student ...
- (wp8.1)样式资源
在开发wp的时候,难免要设置好多属性.但是有好多属性是重复的,我们可不可统一 设置样式呢,答案是肯定的 代码如下 <Page x:Class="Blue.MainPage" ...
- NodeJS学习视频
腾讯课堂初级课程 https://ke.qq.com/webcourse/index.html#course_id=196698&term_id=100233129&taid=1064 ...
- /pentest/enumeration/irpas/itrace
/pentest/enumeration/irpas/itrace 追踪防火墙内部路由