青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 87  文章 - 279  trackbacks - 0
<2006年9月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

潛心看書研究!

常用鏈接

留言簿(19)

隨筆分類(81)

文章分類(89)

相冊

ACM OJ

My friends

搜索

  •  

積分與排名

  • 積分 - 220997
  • 排名 - 118

最新評論

閱讀排行榜

評論排行榜

USE?并查集和線段樹

The k-th Largest Group
Time Limit:2000MS? Memory Limit:131072K
Total Submit:1222 Accepted:290

Description

Newman likes playing with cats. He possesses lots of cats in his home. Because the number of cats is really huge, Newman wants to group some of the cats. To do that, he first offers a number to each of the cat (1, 2, 3, …, n). Then he occasionally combines the group cat i is in and the group cat j is in, thus creating a new group. On top of that, Newman wants to know the size of the k-th biggest group at any time. So, being a friend of Newman, can you help him?

Input

1st line: Two numbers N and M (1 ≤ N, M ≤ 200,000), namely the number of cats and the number of operations.

2nd to (m + 1)-th line: In each line, there is number C specifying the kind of operation Newman wants to do. If C = 0, then there are two numbers i and j (1 ≤ i, jn) following indicating Newman wants to combine the group containing the two cats (in case these two cats are in the same group, just do nothing); If C = 1, then there is only one number k (1 ≤ k ≤ the current number of groups) following indicating Newman wants to know the size of the k-th largest group.

Output

For every operation “1” in the input, output one number per line, specifying the size of the kth largest group.

Sample Input

10 10
0 1 2
1 4
0 3 4
1 2
0 5 6
1 1
0 7 8
1 1
0 9 10
1 1

Sample Output

1
2
2
2
2

Hint

When there are three numbers 2 and 2 and 1, the 2nd largest number is 2 and the 3rd largest number is 1.

Source
POJ Monthly--2006.08.27, zcgzcgzcg

#include?<iostream>
using?namespace?std;
const?int?MAXN?=?200001;

class?UFset
{
public:
????
int?parent[MAXN];
????UFset();
????
int?Find(int);
????
void?Union(int,?int);
}
;

UFset::UFset()
{
????memset(parent,?
-1,?sizeof(parent));
}


int?UFset::Find(int?x)
{
????
if?(parent[x]?<?0)
????????
return?x;
????
else
????
{
????????parent[x]?
=?Find(parent[x]);
????????
return?parent[x];
????}
//?壓縮路徑
}


void?UFset::Union(int?x,?int?y)
{
????
int?pX?=?Find(x);
????
int?pY?=?Find(y);
????
int?tmp;
????
if?(pX?!=?pY)
????
{
????????tmp?
=?parent[pX]?+?parent[pY];?//?加權(quán)合并
????????if?(parent[pX]?>?parent[pY])
????????
{
????????????parent[pX]?
=?pY;
????????????parent[pY]?
=?tmp;
????????}

????????
else
????????
{
????????????parent[pY]?
=?pX;
????????????parent[pX]?
=?tmp;
????????}

????}

}


int?f[(MAXN+1)*3]?=?{0};
int?n,?m;

void?initTree()
{
????
int?l?=?1,?r?=?n;
????
int?c?=?1;
????
while?(l?<?r)
????
{
????????f[c]?
=?n;
????????c?
=?c?*?2;
????????r?
=?(l?+?r)?/?2;
????}

????f[c]?
=?n;//葉子初始化
}


void?insertTree(int?k)
{
????
int?l?=?1,?r?=?n;
????
int?c?=?1;
????
int?mid;

????
while?(l?<?r)
????
{
????????f[c]
++;
????????mid?
=?(r?+?l)?/?2;
????????
if?(k?>?mid)
????????
{
????????????l?
=?mid?+?1;
????????????c?
=?c?*?2?+?1;
????????}

????????
else
????????
{
????????????r?
=?mid;
????????????c?
=?c?*?2;
????????}

????}

????f[c]
++;//葉子增加1
}


void?delTree(int?k)
{
????
int?l?=?1,?r?=?n;
????
int?c?=?1;
????
int?mid;

????
while?(l?<?r)
????
{
????????f[c]
--;
????????mid?
=?(r?+?l)?/?2;
????????
if?(k?>?mid)
????????
{
????????????l?
=?mid?+?1;
????????????c?
=?c?*?2?+?1;
????????}

????????
else
????????
{
????????????r?
=?mid;
????????????c?
=?c?*?2;
????????}

????}

????f[c]
--;//葉子減少1
}


int?searchTree(int?k)
{
????
int?l?=?1,?r?=?n;
????
int?c?=?1;
????
int?mid;

????
while?(l?<?r)
????
{
????????mid?
=?(l?+?r)?/?2;
????????
if?(k?<=?f[2*c+1])
????????
{
????????????l?
=?mid?+?1;
????????????c?
=?c?*?2?+?1;
????????}

????????
else
????????
{
????????????k?
-=?f[2*c+1];
????????????r?
=?mid;
????????????c?
=?c?*?2;
????????}

????}

????
return?l;
}


int?main()
{
????
int?i,?j;
????
int?x,?y;
????
int?k;
????
int?l,?r;
????
int?cmd;
????
int?px,?py;
????
int?tx,?ty,?tz;
????UFset?UFS;

????
????scanf(
"%d%d",?&n,?&m);
????initTree();
????
for?(i=0;?i<m;?i++)
????
{
????????scanf(
"%d",?&cmd);
????????
if?(cmd?==?0)
????????
{
????????????scanf(
"%d%d",?&x,?&y);
????????????px?
=?UFS.Find(x);
????????????py?
=?UFS.Find(y);
????????????
if?(px?!=?py)
????????????
{
????????????????tx?
=?-UFS.parent[px];
????????????????ty?
=?-UFS.parent[py];
????????????????tz?
=?tx?+?ty;
????????????????UFS.Union(x,?y);
????????????????insertTree(tz);
????????????????delTree(tx);
????????????????delTree(ty);
????????????}

????????}

????????
else
????????
{
????????????scanf(
"%d",?&k);
????????????printf(
"%d\n",?searchTree(k));
????????}

????}

????
return?0;
}
posted on 2006-09-06 13:30 閱讀(836) 評論(4)  編輯 收藏 引用 所屬分類: 算法&ACM

FeedBack:
# re: 第一次用兩種數(shù)據(jù)結(jié)構(gòu)解的題目, 紀(jì)念一下 2006-09-08 23:01 Optimistic
哇...偶木了  回復(fù)  更多評論
  
# re: 第一次用兩種數(shù)據(jù)結(jié)構(gòu)解的題目, 紀(jì)念一下 2006-09-08 23:11 
其實(shí)線段樹比較好懂, 但是難在怎么運(yùn)用-_-個(gè)人感覺, 摸索中!~~~  回復(fù)  更多評論
  
# re: 第一次用兩種數(shù)據(jù)結(jié)構(gòu)解的題目, 紀(jì)念一下 2006-09-28 12:21 踏雪赤兔
進(jìn)步很快哩~~贊一個(gè)!
P.S.博客手拉手弄好了~  回復(fù)  更多評論
  
# re: 第一次用兩種數(shù)據(jù)結(jié)構(gòu)解的題目, 紀(jì)念一下 2006-09-28 12:57 
thx!~:)  回復(fù)  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              欧美日韩一级视频| 蜜臀av国产精品久久久久| 欧美成人免费网| 亚洲欧美制服中文字幕| 亚洲国产精品免费| 国产丝袜一区二区三区| 欧美无砖砖区免费| 男女视频一区二区| 欧美一乱一性一交一视频| 一个色综合导航| 亚洲日本中文字幕| 男人的天堂亚洲在线| 亚洲欧美在线看| 亚洲视频在线观看免费| 亚洲区第一页| 在线免费不卡视频| 狠狠色综合播放一区二区| 国产精品青草综合久久久久99| 男女视频一区二区| 美国十次成人| 久久国产精品高清| 欧美一区二区日韩一区二区| 亚洲少妇在线| 亚洲视频一区在线观看| 一区二区三区国产| 99av国产精品欲麻豆| 亚洲人成在线影院| 亚洲精品欧美极品| 99成人在线| 99国内精品久久| 99综合视频| 中日韩视频在线观看| 在线视频日韩| 亚洲午夜未删减在线观看| 亚洲午夜性刺激影院| 亚洲一区二区毛片| 性刺激综合网| 久久狠狠亚洲综合| 久久久久欧美精品| 久热精品在线| 欧美激情综合五月色丁香小说 | 久久激情综合| 久久久91精品国产一区二区精品| 欧美一区二区| 久久男人av资源网站| 久久综合伊人77777尤物| 米奇777在线欧美播放| 欧美激情视频在线播放| 欧美日韩一区二区欧美激情 | 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 亚洲人成网站精品片在线观看| 亚洲国产小视频在线观看| 亚洲狼人精品一区二区三区| 日韩午夜剧场| 亚洲欧美卡通另类91av| 欧美在线啊v| 欧美大片在线看| 99视频一区二区三区| 亚洲综合色自拍一区| 久久久久国产一区二区| 欧美成人黄色小视频| 国产精品成人aaaaa网站| 国产午夜精品久久久久久免费视| 在线观看国产精品网站| 一本在线高清不卡dvd| 欧美一区免费视频| 男人天堂欧美日韩| 99re热这里只有精品视频| 午夜亚洲福利| 欧美www视频| 国产毛片一区| 亚洲国产精品一区二区久| 亚洲一区二区三区免费在线观看 | 久久精品国产亚洲5555| 欧美成人中文| 中国av一区| 久久琪琪电影院| 欧美少妇一区| 亚洲国产精选| 欧美亚洲综合在线| 亚洲国产精品一区二区久| 亚洲在线免费观看| 欧美成人精品一区二区三区| 国产麻豆精品久久一二三| 亚洲精品永久免费精品| 欧美专区亚洲专区| 亚洲精品少妇网址| 久久九九99| 国产精品久久久久9999| 亚洲欧洲综合另类| 久久久久国产精品人| 亚洲另类视频| 久久综合色天天久久综合图片| 国产精品久久久久久久7电影| 亚洲二区在线视频| 欧美一区二区视频在线观看2020 | 国产精品久久亚洲7777| 亚洲国产日韩欧美在线99| 性欧美精品高清| 亚洲精品国产欧美| 久久深夜福利| 久久婷婷色综合| 亚洲天堂成人在线视频| 久久精品国产一区二区三| 欧美日韩一区二区高清| 亚洲黄色毛片| 麻豆久久婷婷| 午夜精品福利一区二区三区av| 欧美日韩一区二区三区四区五区| 精品91久久久久| 久久精品国产精品| 亚洲伊人伊色伊影伊综合网 | 久久久天天操| 亚洲淫性视频| 国产精品久久久久久超碰| 99av国产精品欲麻豆| 欧美顶级大胆免费视频| 久久久爽爽爽美女图片| 国产综合香蕉五月婷在线| 亚洲欧美日韩一区二区| 亚洲精品美女在线| 欧美护士18xxxxhd| 亚洲黄色成人网| 欧美激情一区在线| 老司机精品久久| 在线播放豆国产99亚洲| 巨胸喷奶水www久久久免费动漫| 香蕉成人久久| 国产一区二区三区高清播放| 久久av一区二区三区漫画| 亚洲综合精品自拍| 国产免费观看久久黄| 欧美一级网站| 欧美一二三区精品| 激情久久五月| 欧美xxx成人| 美女视频网站黄色亚洲| 亚洲欧洲精品一区二区三区不卡 | 久久精品国产视频| 久久高清福利视频| 在线免费观看一区二区三区| 欧美va亚洲va香蕉在线| 欧美成人午夜| 一本色道久久88综合日韩精品| 亚洲精品国产日韩| 欧美亚一区二区| 久久国产精品色婷婷| 久久精品在线观看| 91久久一区二区| 日韩视频免费在线| 国产精品视频99| 久久久久在线| 欧美.www| 亚洲综合国产激情另类一区| 午夜性色一区二区三区免费视频| 国产在线成人| 亚洲高清在线观看一区| 欧美日韩色一区| 欧美在线一二三四区| 久久九九精品| 一区二区三区高清不卡| 亚洲欧美一区二区在线观看| 一区精品在线播放| 亚洲精品视频在线观看免费| 国产精品九九| 免费一级欧美片在线观看| 欧美日韩国产123| 久久成人精品无人区| 久久久久久尹人网香蕉| 中日韩在线视频| 亚洲欧美综合v| 亚洲人午夜精品免费| 亚洲欧美日韩电影| 亚洲人成在线观看一区二区| 亚洲午夜91| 亚洲国产天堂久久综合网| 亚洲天堂男人| 亚洲国产精品久久精品怡红院 | 国产午夜精品美女视频明星a级| 欧美大尺度在线| 国产精品久久久久久久久免费 | 久久久久久黄| 亚洲一区二区精品在线| 久久久久久一区| 午夜国产精品视频免费体验区| 久久视频国产精品免费视频在线 | 欧美亚洲一区在线| 一本久久a久久免费精品不卡| 午夜精品视频在线| aa日韩免费精品视频一| 欧美在线观看天堂一区二区三区| 亚洲日本一区二区| 欧美影院视频| 亚洲专区国产精品| 欧美激情一区二区| 久久免费高清| 国产精品午夜久久| 亚洲精品一区二区在线观看| 在线看片第一页欧美| 亚洲女优在线|