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

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

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

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

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

 var fa,s,up:array[..] of longint;
    k1,k2,m,n,x,y,i:longint;
    ch:char; function getf(x:longint):longint;
  var f:longint;
  begin
    if fa[x]<>x then
    begin
      f:=getf(fa[x]);
      up[x]:=up[x]+up[fa[x]];
      fa[x]:=f;
    end;
    exit(fa[x]);
  end; function getu(x:longint):longint;
  begin
    k2:=;
    while fa[x]<>x do
    begin
      k2:=k2+up[x];
      x:=fa[x];
    end;
    exit(x);
  end; begin
  readln(m);
  for i:= to do
  begin
    fa[i]:=i;
    s[i]:=;
    up[i]:=;
  end;
  for i:= to m do
  begin
    read(ch);
    if ch='M' then
    begin
      readln(x,y);
      k1:=getf(x);
      k2:=getf(y);
      fa[k2]:=k1;
      up[k2]:=s[k1];
      s[k1]:=s[k1]+s[k2];
    end
    else begin
      readln(x);
      k1:=getu(x);
      writeln(s[k1]-k2-);
    end;
  end;
end.

poj1988的更多相关文章

  1. poj1988 简单并查集

    B - 叠叠乐 Crawling in process... Crawling failed Time Limit:2000MS     Memory Limit:30000KB     64bit ...

  2. POJ1988 Cube Stacking 【并查集】

    题目链接:http://poj.org/problem?id=1988 这题是教练在ACM算法课上讲的一道题,当时有地方没想明白,现在彻底弄懂了. 题目大意:n代表有n个石头,M a, b代表将a石头 ...

  3. poj1988(并查集)

    题目链接:http://poj.org/problem?id=1988 题意:有n个箱子,初始时每个箱子单独为一列: 接下来有p行输入,M, x, y 或者 C, x: 对于M,x,y:表示将x箱子所 ...

  4. poj1988 Cube Stacking

    并查集的高效之处在于路径压缩和延迟更新. 在本题中需要额外维护子树的规模以及当前子树节点到跟的距离两个数组. 由于一个新的数必然是两棵树拼接而成,对于子树规模的更新直接相加即可, 对于节点到跟的距离: ...

  5. POJ1988 并查集的使用

    Cube Stacking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 21157   Accepted: 7395 Ca ...

  6. POJ1988 Cube stacking(非递归)

    n有N(N<=30,000)堆方块,开始每堆都是一个方块.方块编号1 – N. 有两种操作: nM x y : 表示把方块x所在的堆,拿起来叠放到y所在的堆上. nC x : 问方块x下面有多少 ...

  7. poj1988 Cube Stacking 带权并查集

    题目链接:http://poj.org/problem?id=1988 题意:有n个方块,编号为1-n,现在存在两种操作: M  i  j  将编号为i的方块所在的那一堆方块移到编号为j的方块所在的那 ...

  8. bzoj3376/poj1988[Usaco2004 Open]Cube Stacking 方块游戏 — 带权并查集

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3376 题目大意: 编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方 ...

  9. poj1988(判断一个结点下面有多少个结点,推荐)

    题意:有n个元素,开始每个元素自己一栈,有两种操作,将含有元素x的栈放在含有y的栈的顶端,合并为一个栈.第二种操作是询问含有x元素下面有多少个元素. 6 M 1 6 C 1 M 2 4 M 2 6 C ...

随机推荐

  1. N的N次方(高校俱乐部)

    最近一直在刷字符串和线段树,也越来越少玩高校俱乐部,无聊看到一题N的N次方的问题,脑海中各种打表就涌现出来了. 弄了不一会儿,就写完了,马上提交,但是系统好像出了问题,提示"哦哦,出了点状况 ...

  2. 24种设计模式--中介者模式【Mediator Pattern】

    各位好,大家都是来自五湖四海,都要生存,于是都找了个靠山——公司,给你发薪水的地方,那公司就要想尽办法盈利赚钱,盈利方法则不尽相同,但是作为公司都有相同三个环节:采购.销售和库存,这个怎么说呢?比如一 ...

  3. Array.prototype.map()详解

    今天在地铁上看到这样一个小例子: ["1","2","3"].map(parseInt); 相信很多人和我一样,觉得输出的结果是[1,2,3 ...

  4. jtemplate使用笔记

    最近的项目中用到了jtemplate, 它是客户端基于javascript的模板引擎,绑定的数据为json对象.以前我在页面上显示数据列表时最喜欢用Repeater控件了,因为它相对与其它几个服务端控 ...

  5. Entity Framework多对多关联映射的实现

    Entity Framework是微软官方提供的一个ORM解决方案,它有纯正的血统,比NHibernate更容易使用并且与现有其它官方框架配合更加密切. 时代不断的在发展变化,记得10年前还是ADO( ...

  6. Newtonsoft.Json.dll解析json的dll文件使用

    要解析的json //解析前 //解析前 {,,,,,,,,,,},,,,,,,,,,,},,,,,,,,,,,,,,,,},,,,,,,,,},,,,,,,,,,,,},,,,,,,,,,,},,, ...

  7. entity framework mysql 那些写法你碰不得

    记 几次 ef 数据查询踩到的坑......未完待续

  8. 通过WebApi取出XML数据

    Get请求: public static Result<GetExpressCollectionResponseType> GetDataFromWebs(string waybillNu ...

  9. Missra开源前端框架

    Missra开源前端框架,官方网址:http://framework.missra.com

  10. iOS局部刷新

    iOS: TableView如何刷新指定的cell 或section //一个section刷新 NSIndexSet *indexSet=[[NSIndexSet alloc]initWithInd ...