洛谷 P1955 NOI2015 程式自動分析

2021-08-25 08:04:23 字數 1327 閱讀 7784

目錄:

傳送門

首先看到這種沙雕範圍:109109

直接選擇離散化,然後貌似就是簡單直接的並查集了

我們先將相等關係的

x x

,y' role="presentation">y

y進行合併,然後看不相等關係中的

x x

,y' role="presentation">y

y,如果他們兩個的祖先是一樣的,也就是之前已經確定了他們是相等關係,那麼說明衝突了,所以

i i

keep' role="presentation">kee

pkee

psay

ing say

in

gno!

n o!

~~

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace

std;

inline ll read()

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

return d*f;

}int min(int x,int y)

int f[1000001],l[1000001];

int a[100001],b[100001],c[100001];

int num;

int find(int i)

void hb(int x,int y)

int main()

sort(l,l+num);

int len=unique(l,l+num)-l;

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

for(int i=0;i<=len;i++) f[i]=i;

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

if(c[i]) hb(a[i],b[i]);

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

if(!c[i])

if(find(a[i])==find(b[i]))

if(!tf) printf("yes\n");

}return

0;}

P1955 NOI2015 程式自動分析

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

P1955 NOI2015 程式自動分析

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

洛谷1955 NOI2015 程式自動分析

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