博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj1988
阅读量:5994 次
发布时间:2019-06-20

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

知道了并查集写的问题后,我也明白了为什么之前这道题TLE的原因;

有这道题的合并操作不难想到用并查集维护;

由于并查集易于向上查询而不易于向下查询

所以对于询问方块x下面有多少个方块,我们可以转化为立方柱的规模-x上方的方块数-1

所以我们可以再维护这两个域即可

1 var fa,s,up:array[0..300010] of longint; 2     k1,k2,m,n,x,y,i:longint; 3     ch:char; 4  5 function getf(x:longint):longint; 6   var f:longint; 7   begin 8     if fa[x]<>x then 9     begin10       f:=getf(fa[x]);11       up[x]:=up[x]+up[fa[x]];12       fa[x]:=f;13     end;14     exit(fa[x]);15   end;16 17 function getu(x:longint):longint;18   begin19     k2:=0;20     while fa[x]<>x do21     begin22       k2:=k2+up[x];23       x:=fa[x];24     end;25     exit(x);26   end;27 28 begin29   readln(m);30   for i:=1 to 300000 do31   begin32     fa[i]:=i;33     s[i]:=1;34     up[i]:=0;35   end;36   for i:=1 to m do37   begin38     read(ch);39     if ch='M' then40     begin41       readln(x,y);42       k1:=getf(x);43       k2:=getf(y);44       fa[k2]:=k1;45       up[k2]:=s[k1];46       s[k1]:=s[k1]+s[k2];47     end48     else begin49       readln(x);50       k1:=getu(x);51       writeln(s[k1]-k2-1);52     end;53   end;54 end.
View Code

 

转载于:https://www.cnblogs.com/phile/p/4473199.html

你可能感兴趣的文章
SiteMesh2-示例工程
查看>>
poj 1087 A Plug for UNIX 【最大流】
查看>>
Phoenix与Squirrel 是什么?
查看>>
Photoshop制作的ico图标方法
查看>>
HDU 1241 Oil Deposits (DFS)
查看>>
【翻译自mos文章】注意: ASMB process exiting due to lack of ASM file activity
查看>>
Linux 线程浅析
查看>>
ucgui界面设计演示样例2
查看>>
蓝桥杯练习系统——基础练习 十六进制转十进制
查看>>
Mac: Android studio+VirtualBox+Genymotion
查看>>
The way to Go(4): Go runtime及解释器
查看>>
简易RPC框架-上下文
查看>>
26.使用IntelliJ IDEA开发Java Web项目时,修改了JSP后刷新浏览器无法及时显示修改后的页面...
查看>>
自定义ViewGroup
查看>>
25.管道流
查看>>
2017-2018:时间戳
查看>>
php实现 明明的随机数
查看>>
Guava中针对集合的 filter和过滤功能
查看>>
小程序顶部导航栏的自定义
查看>>
ZooKeeper系列(3):znode说明和znode状态
查看>>