數據星部落管理系統


提交程序

分数: 100 (部分)
时间限制: 30.0s
内存限制: 256M

作者:
题目类型
允许的语言
C, C++

在遙遠的阿爾法星系,有一個神秘的行星名為「數據星」。數據星上住著多個部落,每個部落都有一群部落成員,彼此協作互助。 但隨著星球上的資源日益稀缺,部落之間的關係也變得複雜起來,許多部落開始進行合作與合併,有時甚至要剔除部落中的重複成員來減少內部摩擦。

作為星際聯盟的駐星官,你被指派到數據星去協助他們解決這些衝突與合作需求。星球上的部落長老們提出了一系列的操作需求, 而你需要根據這些需求進行相應的操作來幫助各部落和諧共處。

輸入說明

  • 第一行包含一個整數 T,代表測試案例的數量 (1 ≤ T ≤ 1000)。
  • 對於每個測試案例:
    • 第一行包含兩個整數 groupqueries
      • group 表示部落的總數量 (1 ≤ group ≤ 50000)。
      • queries 表示該測試案例中的操作次數 (1 ≤ queries ≤ 100000)。
    • 接下來的 queries 行,每行包含一個操作:
      • 每行格式為 op x aop x y,根據操作類型的不同選項如下:
        • op 表示操作類型,xy 是部落編號,a 是成員編號。
        • xy 的範圍為 (1 ≤ x, y ≤ group)。
        • a 的範圍為 (1 ≤ a ≤ 64)。
      • 具體操作說明:
        • op = 1:在部落 x 中加入成員 a
        • op = 2:從部落 x 中移除成員 a
        • op = 3:將部落 y 的所有成員合併到部落 x 中。
        • op = 4:剔除部落 x 和部落 y 中的重複成員。
        • op = 5:查詢成員 a 是否存在於部落 x 中,若存在回傳 1,否則回傳 0

輸出說明

對於每一個查詢操作 (op = 5),請輸出查詢結果:

  • 若成員 a 存在於指定部落 x 中,輸出 1;否則輸出 0

操作說明

在每一個測試案例中,你會面對數據星上特定數量的部落(稱為「群組」),每個部落由一組成員(以數字表示)構成。 每個部落長老會提出一系列操作要求,包括:

  1. 增加成員 - 某些部落可能會招募新的成員加入。
  2. 移除成員 - 當部落發現成員不合適或是想要簡化組織結構時,他們會選擇移除成員。
  3. 合併部落 - 有時部落間會達成協議,決定合併彼此的成員以增強力量。
  4. 剔除重複成員 - 部落間的重複成員可能會引發內部矛盾,因此需要剔除重複的成員。
  5. 成員查詢 - 部落長老會查詢某個特定成員是否存在於自己的部落中,確認該成員是否仍然效忠於部落。

你需要依照以下步驟來進行操作:

  • 增加成員op = 1):將數字a加入到目標部落x
  • 移除成員op = 2):將數字a從目標部落x中移除。
  • 合併部落op = 3):將部落y的所有成員合併到部落x中。
  • 剔除重複成員op = 4):從在部落x中,踢除部落x和部落y中剔除重複的成員,確保兩個部落內部沒有重複成員。
  • 成員查詢op = 5):查詢成員a是否在部落x中,若存在則回傳1,否則回傳0

範例

範例輸入
2
3 4    
1 2 5  
3 1 2  
5 1 5  
4 1 3  
2 3    
1 1 10 
2 1 10 
5 1 10
範例輸出
1
0
範例輸入說明
2 
Test Case 1:
3 4    // 三個部落,四個操作
1 2 5  // 在部落2中加入成員5
3 1 2  // 合併部落2到部落1
5 1 5  // 查詢成員5是否在部落1中
4 1 3  // 剔除部落1與部落3之間的重複成員
Test Case 2:
2 3    // 兩個部落,三個操作
1 1 10 // 在部落1中加入成員10
2 1 10 // 從部落1中移除成員10
5 1 10 // 查詢成員10是否在部落1中
說明
  • 在第一個測試案例中:

    1. 執行 1 2 5,將成員 5 加入到部落 2
    2. 執行 3 1 2,將部落 2 合併到部落 1,此時部落 1 包含成員 5
    3. 執行 5 1 5,查詢成員 5 是否在部落 1 中,輸出 1(表示存在)。
    4. 執行 4 1 3,剔除部落 1中 和部落 3 中的重複成員。
  • 在第二個測試案例中:

    1. 執行 1 1 10,將成員 10 加入到部落 1
    2. 執行 2 1 10,將成員 10 從部落 1 移除。
    3. 執行 5 1 10,查詢成員 10 是否在部落 1 中,輸出 0(表示不存在)。

子任務

為了評估不同條件下的效能,我們將題目分為兩個子任務:

  1. 子任務 1 (40 分)

    • \(1 <= T <= 10,1 <= groups <= 100,1 <= queries <= 200, 1 <= a <= 64\)
    • 針對較小數量的部落和操作設計,以測試基本邏輯的正確性。
  2. 子任務 2 (60 分)

    • \(1 <= T <= 1000,1 <= groups <= 50000,1 <= queries <= 100000, 1 <= a <= 64\)
    • 面對大量的部落和操作設計,測試程式在大量資料時的效率。

14:25 op = 4 x y remove duplicates in x from x and y 你需要撰寫程式來處理這些操作,幫助數據星的部落維持和諧穩定。準備好開始這趟數據星之旅了嗎?讓我們開始執行這些操作,協助部落長老們順利解決他們的需求吧!


评论

目前没有评论。