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

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

潛心看書(shū)研究!

常用鏈接

留言簿(19)

隨筆分類(81)

文章分類(89)

相冊(cè)

ACM OJ

My friends

搜索

  •  

積分與排名

  • 積分 - 219411
  • 排名 - 118

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

USE?并查集和線段樹(shù)

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 閱讀(827) 評(píng)論(4)  編輯 收藏 引用 所屬分類: 算法&ACM

FeedBack:
# re: 第一次用兩種數(shù)據(jù)結(jié)構(gòu)解的題目, 紀(jì)念一下 2006-09-08 23:01 Optimistic
哇...偶木了  回復(fù)  更多評(píng)論
  
# re: 第一次用兩種數(shù)據(jù)結(jié)構(gòu)解的題目, 紀(jì)念一下 2006-09-08 23:11 
其實(shí)線段樹(shù)比較好懂, 但是難在怎么運(yùn)用-_-個(gè)人感覺(jué), 摸索中!~~~  回復(fù)  更多評(píng)論
  
# re: 第一次用兩種數(shù)據(jù)結(jié)構(gòu)解的題目, 紀(jì)念一下 2006-09-28 12:21 踏雪赤兔
進(jìn)步很快哩~~贊一個(gè)!
P.S.博客手拉手弄好了~  回復(fù)  更多評(píng)論
  
# re: 第一次用兩種數(shù)據(jù)結(jié)構(gòu)解的題目, 紀(jì)念一下 2006-09-28 12:57 
thx!~:)  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              国产精品久久看| 久久久久亚洲综合| 欧美午夜精品久久久久久浪潮| 亚洲国产成人porn| 亚洲国产免费看| 欧美激情一二区| 99精品热视频| 亚洲一区二区少妇| 国语自产精品视频在线看8查询8 | 国产精品久久午夜夜伦鲁鲁| 午夜精品亚洲| 久久亚洲国产成人| 日韩视频不卡| 欧美中文字幕不卡| 亚洲三级毛片| 亚洲欧美中文在线视频| 亚洲国产精品成人| 亚洲在线第一页| 亚洲人体影院| 亚洲欧美另类综合偷拍| 1000部国产精品成人观看| 亚洲人成网站在线播| 国产精品视频成人| 亚洲国产精品一区| 国产精品综合不卡av| 亚洲国产精品久久人人爱蜜臀| 国产精品久久九九| 欧美激情一区二区久久久| 国产精品www.| 亚洲国产日韩综合一区| 国产亚洲制服色| 99精品国产一区二区青青牛奶| 国产在线观看一区| 亚洲少妇最新在线视频| 亚洲精品乱码久久久久久黑人 | 在线中文字幕不卡| 激情亚洲网站| 亚洲女女做受ⅹxx高潮| 日韩一级片网址| 久久亚洲欧洲| 久久久噜噜噜| 国产片一区二区| 一区二区三区色| 9久草视频在线视频精品| 久久九九热re6这里有精品| 亚洲欧美日韩一区二区三区在线 | 亚洲午夜一区二区| 9i看片成人免费高清| 免费观看日韩| 久久男人资源视频| 国语自产偷拍精品视频偷| 亚洲无线观看| 午夜精品短视频| 欧美四级在线| 亚洲婷婷综合久久一本伊一区| 亚洲最新色图| 欧美精品在线看| 亚洲高清电影| 亚洲欧洲日本专区| 欧美精品一区二区三区四区| 亚洲国产福利在线| 亚洲美女电影在线| 欧美精品一区二区三| 91久久精品国产91性色tv| 亚洲精品久久久久久下一站| 欧美va天堂va视频va在线| 亚洲黑丝在线| 一区二区高清视频在线观看| 欧美日韩一卡二卡| 一区二区三区www| 午夜精品国产更新| 国产精品亚洲综合| 欧美综合国产| 亚洲国产va精品久久久不卡综合| 亚洲毛片在线看| 国产精品劲爆视频| 午夜精品久久久99热福利| 久久一区二区三区国产精品| 精品动漫3d一区二区三区免费版 | 欧美大片免费观看在线观看网站推荐| 欧美大片在线观看一区| 91久久久亚洲精品| 欧美激情1区| 亚洲素人一区二区| 久久亚洲春色中文字幕久久久| 亚洲福利精品| 欧美日韩在线三级| 久久精品理论片| 91久久久久| 午夜精品久久久久久久蜜桃app| 国产欧美综合一区二区三区| 蜜桃久久精品乱码一区二区| 一区二区日韩伦理片| 久久亚洲国产精品一区二区 | 亚洲成人在线视频网站| 欧美福利视频| 亚洲视频香蕉人妖| 欧美激情在线免费观看| 西瓜成人精品人成网站| 国精品一区二区三区| 欧美激情综合在线| 欧美自拍偷拍午夜视频| av不卡在线观看| 美日韩丰满少妇在线观看| 亚洲一区二区三区在线观看视频| 国外成人在线视频| 国产精品久久久对白| 久久躁日日躁aaaaxxxx| 亚洲网站在线播放| 亚洲人成高清| 欧美1区视频| 久久国产免费| 亚洲欧美成人| 一区二区免费在线播放| **欧美日韩vr在线| 国产亚洲午夜| 国产精品久久久久久亚洲调教| 久久精品视频免费观看| 在线视频欧美一区| 亚洲精品欧洲| 91久久精品一区二区别| 麻豆成人精品| 久久黄色网页| 午夜视频一区二区| 亚洲欧美国产制服动漫| 亚洲美女精品成人在线视频| 黄色一区二区三区| 国产日韩欧美高清| 国产精品福利在线观看| 欧美日韩国产三区| 欧美成人中文| 欧美成人一区二区| 欧美大片在线看| 欧美大片一区二区三区| 欧美高清在线视频观看不卡| 免费视频最近日韩| 免费影视亚洲| 欧美激情一区二区三区高清视频 | 99国产精品久久久久久久| 亚洲人体1000| 一本色道久久综合亚洲精品婷婷| 亚洲国产欧美精品| 亚洲另类一区二区| 一本久久综合| 亚洲在线一区二区| 亚洲欧美日韩一区二区三区在线观看 | 国产精品日本一区二区| 国产精品视区| 国产午夜精品全部视频播放| 国产揄拍国内精品对白| 韩国美女久久| 亚洲精品日韩一| 亚洲一区二区av电影| 欧美一区二区三区婷婷月色| 欧美在线观看天堂一区二区三区| 久久成人精品无人区| 久久久久久久久久码影片| 久久中文精品| 亚洲欧洲日本专区| 亚洲在线网站| 久久天堂精品| 欧美日韩亚洲一区二区三区在线 | 久久三级福利| 欧美日韩中文字幕| 国产欧美日韩免费| 亚洲国产乱码最新视频| 亚洲午夜激情| 美女精品网站| 这里只有精品在线播放| 久久精品亚洲精品国产欧美kt∨| 欧美成人有码| 国产一区二区主播在线| 亚洲精品裸体| 欧美在线free| 欧美激情一区二区在线| 亚洲无人区一区| 免费视频一区| 国产色婷婷国产综合在线理论片a| 亚洲国产精品久久久| 亚洲欧美日韩在线观看a三区| 麻豆av一区二区三区| 亚洲午夜免费福利视频| 欧美a级片一区| 国产亚洲一级高清| 中文一区二区| 欧美成年人在线观看| 亚洲一区二区三区视频| 欧美精品久久一区| 韩国女主播一区二区三区| 亚洲综合二区| 亚洲精品男同| 久久亚洲一区二区三区四区| 国产精品日本欧美一区二区三区| 亚洲欧洲精品一区二区三区| 久久久亚洲国产美女国产盗摄| 99re热这里只有精品免费视频| 久久久中精品2020中文| 国产一区二区在线观看免费播放| 妖精视频成人观看www| 欧美国产高清|