湘潭邀请赛 2018 E From Tree to Graph
题意:
给出一棵树以及m,a,b,x0,y0。之后加m条边{(x1,LCA(x1,y1)),(x2,LCA(x2,y2))...(xm,LCA(xm,ym))}。定义z = f(0)^f(1)^...^f(n-1),其中f(i)代表删掉点i的连通块数。则xi = (axi-1+byi-1+z)%n,yi = (bxi-1+ayi-1+z)%n。求xm和ym。
题解:
维护每个点的度数。初始的点的度数即为删掉该点后的连通块数。
第i次加边(xi,LCA(xi,yi))中xi到LCA(xi,yi)的路径上的点(除xi和LCA(xi,yi)以外)度数减1。
每个点的父节点只有一个,用并查集维护每个点的父亲节点到其分支是否被计算过。
#include <iostream>
#include <cstdio>
using namespace std;
const int N = ;
int n, m, a, b, x, y, z;
int u, v;
int tot;
int f[N], depth[N], fa[][N], g[N];
int head[N], nxt[N<<], to[N<<];
int find(int x) {
return x==f[x]?x:f[x]=find(f[x]);
}
void dfs(int u, int pre, int d) {
fa[][u] = pre;
depth[u] = d;
int cnt = ;
for(int i = head[u]; ~i; i = nxt[i]) {
if(to[i] != pre) dfs(to[i], u, d+);
cnt++;
}
g[u] =cnt;
}
int main() {
while(~scanf("%d%d%d%d%d%d", &n, &m, &a, &b, &x, &y)) {
tot = z = ;
for(int i = ; i <= n; i++) f[i] = i, head[i] = -;
for(int i = ; i < n-; i++) {
scanf("%d%d", &u, &v);
to[++tot] = v; nxt[tot] = head[u]; head[u] = tot;
to[++tot] = u; nxt[tot] = head[v]; head[v] = tot;
}
dfs(, , );
for(int i = ; i < ; i++)
for(int j = ; j < n; j++)
fa[i+][j] = fa[i][fa[i][j]];
for(int i = ; i < n; i++) z ^= g[i];
while(m--) {
u = (a*x+b*y+z)%n;
v = (a*y+b*x+z)%n;
x = u; y = v;
if(depth[u]<depth[v]) swap(u, v);
int dep = depth[u]-depth[v];
if(dep>) {
for(int i = ; i >= ; i--) {
if(dep&(<<i)) u = fa[i][u];
}
}
for(int i = ; i >= ; i--) {
if(fa[i][u] != fa[i][v]) {
u = fa[i][u];
v = fa[i][v];
}
}
if(u!=v) v = fa[][v];
u = find(x);
while(depth[fa[][u]]>depth[v]) {
z ^= g[fa[][u]];
g[fa[][u]]--;
z ^= g[fa[][u]];
f[u] = fa[][u];
u = find(u);
}
}
printf("%d %d\n", x, y);
}
}
湘潭邀请赛 2018 E From Tree to Graph的更多相关文章
- 湘潭邀请赛 2018 I Longest Increasing Subsequence
题意: 给出一个长度为n的序列,序列中包含0.定义f(i)为把所有0变成i之后的Lis长度,求∑ni=1i⋅f(i). 题解: 设不考虑0的Lis长度为L,那么对于每个f(i),值为L或L+1. 预处 ...
- 湘潭邀请赛 2018 D Circular Coloring
题意: 给一个环,环上有n+m个点.给n个点染成B,m个点染成W.求所有染色情况的每段长度乘积之和. 题解: 染成B的段数和染成W的段数是一样的(因为是环). 第一段是可以移动的,例如BBWWW移动为 ...
- 2018 CCPC 湘潭邀请赛 & 2018 JSCPC
Problem A Problem B Problem C 这题用主席树轻松解决 可以二分答案,每次查询:也可以直接开个全局变量在主席树上二分: 时间复杂度$O(nlog^{2}n)$或$O(nlog ...
- 湘潭邀请赛+蓝桥国赛总结暨ACM退役总结
湘潭邀请赛已经过去三个星期,蓝桥也在上个星期结束,今天也是时候写一下总结了,这应该也是我的退役总结了~ --------------------------------湘潭邀请赛----------- ...
- 1250 Super Fast Fourier Transform(湘潭邀请赛 暴力 思维)
湘潭邀请赛的一题,名字叫"超级FFT"最终暴力就行,还是思维不够灵活,要吸取教训. 由于每组数据总量只有1e5这个级别,和不超过1e6,故先预处理再暴力即可. #include&l ...
- 湘潭邀请赛 Hamiltonian Path
湘潭邀请赛的C题,哈密顿路径,边为有向且给定的所有边起点小于终点,怎么感觉是脑筋急转弯? 以后一定要牢记思维活跃一点,把复杂的事情尽量简单化而不是简单的事情复杂化. #include<cstdi ...
- HDU6280 From Tree to Graph
下午打了湘潭邀请赛,好像缓解了一下北京网络赛超强的自闭感.补一下这个图论题.(补了很久) 题意:给你一颗n节点的树,有m个操作,每次向xi和lca(xi,yi)连边,然后每次zi就是对于新的图在删除每 ...
- XTU 1264 - Partial Sum - [2017湘潭邀请赛E题(江苏省赛)]
2017江苏省赛的E题,当时在场上看错了题目没做出来,现在补一下…… 题目链接:http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id ...
- HDU 6280 From Tree to Graph(2018 湘潭邀请 E题,树的返祖边)
其实打返祖边就相当于$x$到祖先这一段点(不包括两端)答案都要减$1$. 然后每个点最多减$1$次$1$. #include <bits/stdc++.h> using namespace ...
随机推荐
- 图解HTTP-1.web和网络基础
目录 1. 3 项 WWW 构建技术 2. TCP/IP 是互联网相关的各类协议族的总称 协议(protocol) TCP/IP分层管理 TCP/IP通信传输流 封装(encapsulate) 3. ...
- JS - 给String.prototype添加replaceAll方法
String.prototype.replaceAll = function (targetStr, newStr) { var sourceStr = this.valueOf(); while ...
- expect配合shell 实现自动分发秘钥文件
expect使用场景 有时候需要批量地执行一些操作,或者执行自动化的操作的时候,有些指令需要交互式地进行这就会有很多麻烦,linux下有一个程序交expect,它可以模拟键盘输入文本,省去人工干预交互 ...
- Docker自学纪实(三)Docker容器数据持久化
谈起数据卷 我一直觉得是个枯燥无聊的话题 但是通过今天的实操和阅读 我发现其实并不是 其实就像走夜路 没有光明,第一次都是恐惧 但是如果走的次数多了 或者静下心来去克制恐惧 也许就会驾轻就熟或者等到黎 ...
- Centos6.8安装python3.6
1.目的简介: centos默认使用的是python 2.6.6,而python的2.x 和 3.x 是两个不兼容的版本,到目前的python发展,都已经过渡到了python 3.x,所以需要手动将p ...
- MySQL创建民族表的SQL语句
MySQL创建民族表的SQL语句 CREATE TABLE `nation` ( `id` ) unsigned NOT NULL AUTO_INCREMENT, `nation` ) NOT NUL ...
- laravel 安装excel扩展
1,使用Composer安装依赖 在Laravel项目根目录下使用Composer安装依赖: composer require maatwebsite/excel ~2.1 ps:一定要加上~2.1! ...
- NumPy库入门
ndarray数组的元素类型 ndarray数组的创建 ndarray数组的操作 ndarray数组的运算
- 6 Django的视图层
视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . ...
- cocos2d-x 3.0的入门程序:helloworld
看过了这么多不同方向的应用,发现很多程序入门都是helloworldhelloworld是所有程序员的绝对初恋 先看一下程序的运行结果吧 然后就是他的工程代码 工程的目录有两个 Classes:程序中 ...