洛谷 P1955 程式自動分析(並查集 離散化)

2021-10-04 23:53:50 字數 658 閱讀 3409

分析:首先看到題目中有兩種關係,會想到帶權並查集,但發現並不適用,反而有點複雜,其次看了元素的範圍之後才發現這道題應該就是普通並查集,難點在於對元素進行離散化,使得元素大小縮小到下標可以表示的範圍。

#include#include#include#includeusing namespace std;

const int n = 1e7;

int f[n],b[n],cnt;

struct node

} a[n];

int find(int x)// 路徑壓縮

int main()

sort(b,b + cnt);

cnt = unique(b,b + cnt) - b;// 去除重複元素,返回末尾位址,注意要先排序

sort(a,a + n);// 按照e從大到小排序

// 離散化

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

int flag = 1;

for(int i = 0; i < n; i++) // 當e==0並且u和v在同一集合中

} if(flag) printf("yes\n");

else printf("no\n");

} return 0;

}

洛谷P1955 程式自動分析 並查集 離散

給出n nn個變數之間的關係 等或不等 求這些活能否全部是真話。思路 考慮並查集,先將讀入的排序,給出相等關係的在前,不等關係的在後。那麼對於所有相等的兩個變數,我們將它們化為同一集合。之後對於不相等的變數,我們看看這兩個變數是否在同一集合內,如果在同一集合內,說明這兩個變數是相等的,所以肯定不成立...

洛谷P1955 程式自動分析 並查集 離散

給出nn 個變數之間的關係 等或不等 求這些活能否全部是真話。思路 考慮並查集,先將讀入的排序,給出相等關係的在前,不等關係的在後。那麼對於所有相等的兩個變數,我們將它們化為同一集合。之後對於不相等的變數,我們看看這兩個變數是否在同一集合內,如果在同一集合內,說明這兩個變數是相等的,所以肯定不成立 ...

洛谷 P1955 NOI2015 程式自動分析

目錄 傳送門 首先看到這種沙雕範圍 109109 直接選擇離散化,然後貌似就是簡單直接的並查集了 我們先將相等關係的 x x y role presentation y y進行合併,然後看不相等關係中的 x x y role presentation y y,如果他們兩個的祖先是一樣的,也就是之前已...