P1955 NOI2015 程式自動分析

2022-05-10 23:08:09 字數 916 閱讀 8795

給定多個 $ x_i \ x_j $ 是否相等的條件

判斷能否實現給每個 $ \ x_ i \ $賦上合適的值滿足條件

考慮用並查集實現

若兩個數相等,則表示它們的祖先相同

給出的條件要先排序,把所有相同的條件放在前面先處理

數的範圍很大,並查集陣列開不下,需要離散化一下

#pragma gcc optimize(3)

#include using namespace std;

const int n = 1000005;

int t, n, f[n], hash[n], tot = 0;

struct node u[n];

int getf(int u)

template void read(t &t)

while(ch >= '0' && ch <= '9')

t *= m;

}bool cmp(const node &a, const node &b)

int main()

sort(hash + 1, hash + tot + 1);

int siz = unique(hash + 1, hash + tot + 1) - hash - 1;

for(register int i = 1; i <= n; i++)

for(register int i = 1; i <= siz * 2; i++) f[i] = i;

sort(u + 1, u + n + 1, cmp);

for(register int i = 1; i <= n; i++)

} else

}printf("%s\n", fl ? "yes" : "no");

}return 0;

}

P1955 NOI2015 程式自動分析

題意 略 這東西應該都能看懂 思路先排序,把所有e 1的操作放在前面,然後再進行e 0的操作,在進行e 1的操作的時候,我們只要把它約束的兩個變數放在同乙個集合裡面即可。再e 0,即存在一條不相等的約束條件,對於它約束的兩個變數,如果在乙個集合裡面,那就不可能滿足!如不相等的約束條件都滿足,那就ye...

洛谷 P1955 NOI2015 程式自動分析

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

洛谷1955 NOI2015 程式自動分析

題目 程式自動分析 思路 因為資料太大,所以要先離散化一下。然後對於每個相等的條件,用並查集維護。再遍歷不相等的條件,對於每個條件 x y 0 如果fa x fa y 則不可能。include include include include include include include inclu...