並查集 水晶球 nkoj2105

2021-08-19 16:07:57 字數 952 閱讀 7658

動態維護[l,r]區間的和

利用帶序號的並查集與字首和

這裡將i節點的到它的父親fi這一區間的和記作dis[i],將x的字首和記作sx

s

x有如下性質:

可以得到合併的時候:

這樣維護序號,如果兩個節點屬於同一堆,則可得到他們組成的區間的和

//

// created by rv on 2018/4/20.

//#include "cstdio"

#include "map"

using

namespace

std;

struct uf

}int get_father(int x) else

}void merge(int x, int y, int p)

void check(int x, int y, int p) else

} else

}void print()

printf("\n");

// printf("size: ");

// for (int i = 0; i < count; i++)

// printf("\n");

printf("dis: ");

for (int i = 0; i < count; i++)

printf("\n");

}};int main()

if (mp.find(l - 1) == mp.end())

uf.check(mp[r], mp[l - 1], p);

// uf.print();

}return

0;}

由於l,r太大,所以用map對映(離散化)後再用並查集處理較好,具體做法就是mp[i]=mp.size()

Photoshop製作水晶球中的美女

使用工具 photoshop cs3 注 文中所使用快捷方式,均在英文輸入法狀態下有效。效果圖 第一步 新建乙個600 800畫素的檔案,點選 圖層面板 下方的 建立新圖層按鈕 新建一層,系統自動將其命名為 圖層1 使用 橢圓選框工具 繪製乙個正圓選區,效果如 圖01 所示。第三步 在 圖層1 的縮...

並查集水題

已知n個人序號為1 n,分別屬於若干個團隊,有m條線索表明某兩個人屬於同乙個團隊,那麼這n個人一共有幾個團隊。輸入第一行為兩個數n和m,第2到m 1行為m條線索 每行兩個數a,b表示序號為a和為b的兩個人在同一隊伍中。輸出為乙個數,表示隊伍個數。示例資料 輸入 10 9 1 23 4 5 24 6 ...

並查集水題

給定一棵樹,問以其為唯一最小生成樹的完全圖的邊權和最大為多少。並查集維護大小,按 kr usca l kru scal 的方法,每次貪心連邊。見下 include using namespace std define r register define maxn 20005 define ll lo...