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

隨筆 - 87  文章 - 279  trackbacks - 0
<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

潛心看書研究!

常用鏈接

留言簿(19)

隨筆分類(81)

文章分類(89)

相冊

ACM OJ

My friends

搜索

  •  

積分與排名

  • 積分 - 219409
  • 排名 - 118

最新評論

閱讀排行榜

評論排行榜

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];? // ?加權合并
???????? 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:28 閱讀(821) 評論(4)  編輯 收藏 引用 所屬分類: ACM題目

FeedBack:
# re: pku2985 第一次用兩種數據結構解題, 并查集+線段樹 2006-09-22 13:24 A3
可否講解一下線段樹部分  回復  更多評論
  
# re: pku2985 第一次用兩種數據結構解題, 并查集+線段樹 2006-09-22 17:47 
把區間劃出來, 節點(非葉子), 表示該區間里面含有多少個元素。
如果 n = 10;
而集合大小分別是 1, 1, 2, 6;

則 區間(1-10) = 4; 區間(1-5) = 3;

就這樣用線段樹動態維護每次集合合并后的集合大小。

初始化(1-10) = 10;
因為開始時, 集合大小為1, 1, 1, 1, 1, 1, 1, 1, 1, 1  回復  更多評論
  
# re: pku2985 第一次用兩種數據結構解題, 并查集+線段樹 2006-09-24 19:53 Optimistic
偶的第一次呢 靜待。。。  回復  更多評論
  
# re: pku2985 第一次用兩種數據結構解題, 并查集+線段樹 2006-09-24 22:23 
+U ^_^  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              老司机午夜精品视频| 亚洲精品一二区| 欧美精品1区2区3区| 亚洲欧美在线aaa| 亚洲卡通欧美制服中文| 久久精品噜噜噜成人av农村| 亚洲激情在线观看| 国产精品一区二区三区久久久| 欧美国产日本高清在线| 欧美精品电影在线| 欧美日本视频在线| 欧美色精品天天在线观看视频 | 亚洲日韩第九十九页| 黄色日韩网站| 在线中文字幕一区| 午夜激情综合网| 噜噜噜躁狠狠躁狠狠精品视频 | 国产精品入口日韩视频大尺度| 男人插女人欧美| 国产麻豆成人精品| 亚洲成色精品| 久久久www成人免费无遮挡大片| 亚洲国产精品悠悠久久琪琪| 亚洲人成小说网站色在线| 亚洲欧洲美洲综合色网| 久久亚洲电影| 国产亚洲欧洲| 香蕉免费一区二区三区在线观看| 欧美激情四色| 久久久97精品| 国内精品久久久久影院色| 欧美一区网站| 欧美一区二区视频网站| 欧美日韩在线播放一区二区| 亚洲国产精品成人久久综合一区| 久久国产精品久久久| 亚洲一二区在线| 国产日韩欧美a| 久久成人国产| 久久嫩草精品久久久精品| 国内精品嫩模av私拍在线观看| 久久精品视频免费播放| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲一区欧美激情| 欧美精品在线视频| 久久国产精品久久精品国产| 国产精品视频yy9099| 亚洲综合日本| 一本一本a久久| 欧美日韩国产另类不卡| 日韩香蕉视频| 夜夜嗨av一区二区三区四季av| 欧美视频福利| 久久久噜噜噜久久久| 午夜久久电影网| 国内一区二区三区| 亚洲欧洲另类国产综合| 国产欧美一区在线| 亚洲国产欧美精品| 国产精品久久久久婷婷| 久久综合给合| 欧美日韩1区2区3区| 亚洲在线中文字幕| 鲁大师影院一区二区三区| 亚洲欧美日韩一区二区在线| 欧美一区在线直播| 亚洲视频一区在线| 毛片基地黄久久久久久天堂| 亚洲一区二区三区欧美| 久久久精品2019中文字幕神马| 亚洲日本激情| 亚洲在线视频网站| 影音先锋另类| 午夜精品一区二区三区在线| 亚洲国产欧美一区| 欧美一级视频一区二区| 亚洲视频1区2区| 另类尿喷潮videofree| 欧美一级电影久久| 欧美系列精品| 亚洲一区二区三区四区在线观看| 久久免费视频在线观看| 欧美在线日韩| 国产女人aaa级久久久级| 亚洲网站视频福利| 中国女人久久久| 午夜精品久久| 欧美性猛交xxxx乱大交蜜桃| 亚洲精品视频在线| 亚洲小视频在线观看| 欧美日韩在线亚洲一区蜜芽| 亚洲自拍偷拍麻豆| 亚洲欧美中文日韩在线| 欧美日韩精品三区| 亚洲欧美国产另类| 免费成人毛片| 在线亚洲免费| 国产综合色在线视频区| 久久只精品国产| 在线一区二区视频| 免费在线观看日韩欧美| 夜夜狂射影院欧美极品| 国产精品你懂的在线欣赏| 久久午夜羞羞影院免费观看| 99re热这里只有精品视频| 欧美亚洲午夜视频在线观看| 国模私拍视频一区| 国产精品午夜国产小视频| 免费久久久一本精品久久区| 中文日韩在线视频| 欧美福利电影网| 久久综合九色综合久99| 午夜精品免费| 国产精品99久久久久久久女警| 激情欧美一区| 激情欧美一区二区| 国产精品夜夜夜| 欧美小视频在线| 国产精品第一区| 国产精品www网站| 欧美激情1区2区3区| 国产精品国产精品| 久久精品国产99| 欧美一区二区播放| 亚洲欧美一区二区三区在线| 一本一本久久| av成人动漫| 亚洲欧美日本国产专区一区| 日韩写真视频在线观看| 亚洲乱码国产乱码精品精| 久久亚洲高清| 久久久www成人免费精品| 亚洲永久字幕| 日韩网站在线看片你懂的| 国产精品日韩欧美一区二区| 欧美精品一区二区三区在线播放 | 午夜宅男久久久| 午夜精品视频在线观看| 久久久欧美精品| 欧美日韩高清在线一区| 国产乱码精品一区二区三区av| 国产精品一区免费在线观看| 亚洲第一狼人社区| 夜夜狂射影院欧美极品| 久久亚洲春色中文字幕| 欧美成人黑人xx视频免费观看| 亚洲精品日韩激情在线电影| 亚洲欧美乱综合| 欧美视频在线一区| 一区二区三区波多野结衣在线观看| 亚洲一级片在线观看| 欧美成人精品一区| 国产午夜亚洲精品不卡| 亚洲免费影院| 一本色道久久综合亚洲精品不卡 | 亚洲欧美一区二区精品久久久| 久久人人爽爽爽人久久久| 日韩视频免费观看高清完整版| 免费观看一级特黄欧美大片| 国产视频在线一区二区 | 欧美激情1区2区| 亚洲成人在线视频网站| 久久久久久穴| 亚洲欧美日韩国产另类专区| 国产精品成人一区二区网站软件 | 亚洲欧美日韩天堂一区二区| 麻豆国产va免费精品高清在线| 久久精品国产精品亚洲综合| 国产精品中文字幕欧美| 性亚洲最疯狂xxxx高清| 午夜日韩电影| 在线看国产日韩| 亚洲欧洲日韩在线| 国产精品99免费看 | 亚洲精品久久久久| 欧美日韩大片| 欧美成黄导航| 狠狠干成人综合网| 一区二区三区四区五区精品视频| 国产精品婷婷| 亚洲免费高清视频| 亚洲欧洲精品一区二区三区波多野1战4 | 欧美一级免费视频| 国产日韩专区在线| 亚洲高清视频一区| 国产日韩精品在线| 欧美激情2020午夜免费观看| 欧美精品免费在线观看| 欧美日韩免费观看中文| 在线欧美视频| 欧美性片在线观看| 欧美一区2区三区4区公司二百| 亚洲精品一区二区三区樱花| 久久精品免费播放| 国模套图日韩精品一区二区| 欧美在线一二三区| 久久精品亚洲一区| 亚洲国产另类久久久精品极度| 亚洲一区二区三区四区中文| 亚洲一区二区av电影|