【LA 3027 Corporative Network】
·一些很可爱的询问和修改,放松地去用并查集解决。
·英文题,述大意:
输入n(5<=n<=20000)表示树有n个节点,并且会EOF结束地读入不超过 20000个操作,一共有两种:
①I v u:表示将v的父亲节点设置为u(在这之前v没有爸爸),边权设置为abs(v-u)%1000。
②E u:表示询问u到当前它所在树的根节点的距离。
·分析:
为了记录当前一系列加边操作后所有的点的位置情况(因为你随时可能回答询问啊),根据这道题的点关系特点[只在乎点和其根节点的信息],我们选择并查集来加以维护。
然后我们只需要在标准的FindFather函数的回溯过程里面加入边权的累积,这样一次函数就可以既完成路径压缩,又维护了沿途所有点各自到根节点的距离(就是边权和)。
然后这么短的题解让我想起了网络上的人们常常使用的一句题解推托之词:“哎呀,其他的搞一搞就出来了”。但是这道题真是这么单纯。OK。
#include<stdio.h>
#define go(i,a,b) for(int i=a;i<=b;i++)
int T,n,fa[],d[];char c;
int A(int a){return a>?a:-a;}
int find(int u)
{
if(u==fa[u])return u;int Fa=find(fa[u]);
d[u]+=d[fa[u]];return fa[u]=Fa;
}
int main()
{
scanf("%d",&T);while(T--&&scanf("%d",&n))
{
go(u,,n)d[fa[u]=u]=;int u,v;
while(scanf(" %c",&c),c!='O')
{
if(c=='I')scanf("%d%d",&v,&u),fa[v]=u,d[v]=A(v-u)%;
if(c=='E')scanf("%d",&u),fa[u]=find(u),printf("%d\n",d[u]);
}
}
return ;
}//Paul_Guderian
明天当孤独袭来时我不会再流一滴泪,
我会用歌声抹去那创痛的灰烬。—————汪峰《明天》
【LA 3027 Corporative Network】的更多相关文章
- [LA] 3027 - Corporative Network [并查集]
A very big corporation is developing its corporative network. In the beginning each of the N enterpr ...
- LA 3027 Corporative Network 并查集记录点到根的距离
Corporative Network Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu [S ...
- 并查集(路径更新) LA 3027 Corporative Network
题目传送门 题意:训练指南P192 分析:主要就是一个在路径压缩的过程中,更新点i到根的距离 #include <bits/stdc++.h> using namespace std; c ...
- LA 3027 Corporative Network
这题感觉和 POJ 1988 Cube Stacking 很像,在路径压缩的同时递归出来的时候跟新distant数组 我发现我一直WA的原因是,命令结束是以字母o结束的,而不是数字0!! //#def ...
- 【暑假】[实用数据结构]UVAlive 3027 Corporative Network
UVAlive 3027 Corporative Network 题目: Corporative Network Time Limit: 3000MS Memory Limit: 30000K ...
- 3027 - Corporative Network(并差集)
3027 - Corporative Network A very big corporation is developing its corporative network. In the begi ...
- 3027 - Corporative Network
3027 - Corporative Network 思路:并查集: cost记录当前点到根节点的距离,每次合并时路径压缩将cost更新. 1 #include<stdio.h> 2 #i ...
- UVALive 3027 Corporative Network
---恢复内容开始--- Corporative Network Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld ...
- UVALive 3027 Corporative Network 带权并查集
Corporative Network A very big corporation is developing its corporative networ ...
随机推荐
- 201621123057 《Java程序设计》第1周学习总结
1.本周学习总结 .java - - 源程序 .class - - 字节码文件 JVM - - 虚拟机 JRE - - 执行环境 JDK - - 开发工具包 其中,运行的是.class,而非.java ...
- python 归并排序
def merge_sort(alist): if len(alist) <= 1: return alist # 二分分解 num = len(alist)/2 left = merge_so ...
- 【Swift】iOS裁剪或者压缩后出现的白边问题
只需要将所有的CGFloat转化为NSInteger即可 func imageScaleSize(newSize: CGSize) -> UIImage{ let width = NSInteg ...
- 《高级软件测试》11.14.安装和运行Jira
今日任务完成情况如下: 小段:研究Jira在Linux的安装教程 小费:尝试在Ubuntu下安装Jira 小高:查阅了关于Jira软件的介绍和安装教程,下载准备明天安装,并学习使用 小王:注册Jira ...
- Andrew Ng机器学习第一章——单变量线性回归
监督学习算法工作流程 h代表假设函数,h是一个引导x得到y的函数 如何表示h函数是监督学习的关键问题 线性回归:h函数是一个线性函数 代价函数 在线性回归问题中,常常需要解决最小化问题.代价函数常用平 ...
- linux下xargs和管道的区别
管道将前面的标准输出作为后面的标准输入,xargs则将标准输入作为命令的参数 一.简介 1.背景 之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了x ...
- python入门(13)获取函数帮助和调用函数
Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数.可以直接从Python的官方网站查看文档: http://doc ...
- 使用nodeJS的 crypto模块来为你的密码hash加盐
这篇文章将向你解释如何使用Node.js的Crypto模块对你的密码进行加盐hash.在这里,我们将不会对不懂的密码存储方式进行详细的比较.我们将要做的是知道在Node.js中使用加盐hash在进行密 ...
- python开发:python基本数据类型
运算符 1.算数运算: 2.比较运算: 3.赋值运算: 4.逻辑运算: 5.成员运算: 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31- ...
- [翻译] softmax和softmax_cross_entropy_with_logits的区别
翻译自:https://stackoverflow.com/questions/34240703/whats-the-difference-between-softmax-and-softmax-cr ...