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

隨筆 - 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>
              欧美成人官网二区| 99热精品在线观看| 久久福利视频导航| 韩国精品久久久999| 久久精品中文字幕一区| 欧美影院视频| 亚洲国产日韩在线| 亚洲精品一区二区在线| 欧美视频日韩视频| 久久精品国产第一区二区三区最新章节| 亚洲婷婷综合久久一本伊一区| 国产精品裸体一区二区三区| 欧美在线影院| 久久亚洲精品欧美| 亚洲手机视频| 欧美伊久线香蕉线新在线| 在线观看亚洲专区| 日韩性生活视频| 国产午夜精品美女视频明星a级| 麻豆成人精品| 欧美午夜一区二区| 久久综合久久综合九色| 欧美女同视频| 久久久精品日韩欧美| 欧美激情一区二区在线| 午夜在线视频观看日韩17c| 久久高清免费观看| 亚洲一区二区三区精品在线观看| 久久国产精品99国产| 9人人澡人人爽人人精品| 午夜一级在线看亚洲| 99riav1国产精品视频| 午夜亚洲福利在线老司机| 亚洲毛片在线免费观看| 午夜激情亚洲| 日韩亚洲一区二区| 久久久之久亚州精品露出| 亚洲在线不卡| 欧美激情第三页| 久久综合影视| 国产九色精品成人porny| 亚洲国产日韩欧美一区二区三区| 国产精品嫩草99a| 亚洲茄子视频| 最近中文字幕日韩精品 | 亚洲深夜福利在线| 亚洲黄色在线观看| 久久精品一二三| 久久精品电影| 国产精品一区二区三区成人| 亚洲片在线资源| 亚洲国产专区| 美女精品视频一区| 美女免费视频一区| 韩国一区二区三区美女美女秀| 一区二区三区免费观看| 亚洲图片在线观看| 欧美啪啪成人vr| 亚洲欧洲在线免费| 亚洲精品欧美激情| 老司机午夜精品视频| 毛片一区二区三区| 精品999久久久| 久久视频在线视频| 免费黄网站欧美| 亚洲国产欧美久久| 猛男gaygay欧美视频| 亚洲大黄网站| 日韩亚洲在线| 欧美日韩一区二区高清| 99re6这里只有精品视频在线观看| 日韩视频在线一区二区| 欧美激情一区三区| av不卡在线看| 羞羞答答国产精品www一本| 国产精品视频免费在线观看| 亚洲在线成人| 久热re这里精品视频在线6| 今天的高清视频免费播放成人| 久久精彩视频| 亚洲激情视频网站| 亚洲一区黄色| 国产一级揄自揄精品视频| 久久精品国产一区二区三区免费看 | 久久国产加勒比精品无码| 久久综合色一综合色88| 91久久精品一区二区别| 欧美日韩国产91| 亚洲欧美日韩天堂| 欧美激情精品久久久久久免费印度| 亚洲精品日韩在线观看| 国产精品二区二区三区| 欧美一区二区在线播放| 亚洲福利久久| 午夜精品国产精品大乳美女| 激情小说另类小说亚洲欧美| 欧美日韩国产一区二区| 亚洲欧美日韩在线不卡| 亚洲国产清纯| 久久久久久欧美| 中文网丁香综合网| 精品不卡在线| 国产精品盗摄久久久| 久久久精品视频成人| 亚洲人体一区| 久久精品观看| 亚洲欧洲精品一区二区| 欧美日韩国产成人在线免费 | 亚洲电影成人| 欧美色欧美亚洲另类七区| 亚洲欧美日韩一区二区三区在线观看 | 国产精品久久久久久亚洲调教| 亚洲自拍偷拍色片视频| 久久综合色婷婷| 夜夜嗨av一区二区三区| 国产视频久久| 欧美搞黄网站| 中国成人亚色综合网站| 亚洲国产一区二区精品专区| 午夜在线视频一区二区区别 | 午夜精品久久久久久久久久久久久 | 欧美成人午夜免费视在线看片| 一本色道久久| 久久久精品国产免大香伊| 亚洲人体影院| 国产一区日韩二区欧美三区| 欧美日韩ab| 先锋影音久久久| 亚洲精品乱码久久久久久黑人| 久久国产日韩| 亚洲一区二区免费| 亚洲精品久久视频| 国产精品美女久久| 国产精品xnxxcom| 欧美成人国产一区二区| 性欧美8khd高清极品| 亚洲精品欧洲| 亚洲第一综合天堂另类专| 亚洲女女做受ⅹxx高潮| 亚洲欧美视频在线观看视频| 亚洲另类春色国产| 亚洲激情偷拍| 伊人激情综合| 国产综合久久久久久鬼色| 国产亚洲一区二区三区在线观看 | 久久免费观看视频| 欧美在线播放| 亚洲综合精品四区| 欧美mv日韩mv国产网站| 欧美韩日视频| 欧美成人精品一区| 浪潮色综合久久天堂| 久久久精品一品道一区| 久久久久五月天| 久久日韩粉嫩一区二区三区| 久久精品道一区二区三区| 久久精品卡一| 久久久久国色av免费观看性色| 久久精品1区| 久久亚洲欧美国产精品乐播| 久久久久九九视频| 亚洲一区二区成人| 久久精品色图| 免播放器亚洲一区| 欧美国产综合视频| 最新热久久免费视频| 欧美成人精品1314www| 亚洲精品久久久久久下一站| 一本色道久久88综合亚洲精品ⅰ | 久久爱另类一区二区小说| 亚洲天堂av电影| 久久精品日韩| 亚洲福利专区| 一本久久知道综合久久| 亚洲丝袜av一区| 一区二区免费看| 久久久视频精品| 欧美激情日韩| 国产精品第一区| 国产一区二区在线免费观看| 国产毛片一区| 在线视频一区观看| 欧美亚洲视频| 亚洲成色777777在线观看影院| 亚洲人成久久| 亚洲调教视频在线观看| 老司机一区二区| 国产精品草莓在线免费观看| 国产一区二区精品久久| 99ri日韩精品视频| 欧美伊人影院| 亚洲国产视频一区| 亚洲影院色无极综合| 久久综合久久久久88| 欧美日韩综合视频网址| 亚洲片在线观看| 欧美亚洲在线观看| 欧美激情一区二区三区不卡| 一区二区日韩欧美| 欧美一级午夜免费电影|