P1955 NOI2015 程式自動分析

2022-05-24 14:03:09 字數 918 閱讀 7009

題意

略(這東西應該都能看懂)

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

顯然並查集,但是因為資料範圍到了 \(1e9\) 所以我們需要使用離散化(不開也行,也就是會mle)

**

#include#include#include#include#include#include#include#define int long long

using namespace std;

int t,n,f[1000007],book[1000007*3];

struct nodea[1000001];

bool cmp(node a,node b)

int find(int x)

signed main()

sort(book,book+tot);//排序

int reu=unique(book,book+tot)-book;//去重

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

for(int i=1;i<=reu;i++) f[i]=i;//初始化

sort(a+1,a+n+1,cmp);//按e排序

for(int i=1;i<=n;i++)else if(r1==r2)

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

} return 0;

}

\[注意初始化 f[i]=i \\

沒了\]

P1955 NOI2015 程式自動分析

給定多個 x i x j 是否相等的條件 判斷能否實現給每個 x i 賦上合適的值滿足條件 考慮用並查集實現 若兩個數相等,則表示它們的祖先相同 給出的條件要先排序,把所有相同的條件放在前面先處理 數的範圍很大,並查集陣列開不下,需要離散化一下 pragma gcc optimize 3 inclu...

洛谷 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...