題目:程式自動分析
思路:因為資料太大,所以要先離散化一下。
然後對於每個相等的條件,用並查集維護。
再遍歷不相等的條件,對於每個條件 x y 0 ,如果fa[x]==fa[y],則不可能。
**:
#include#include#include #include #include #include #include #include #include #include #include using namespace std;
#define maxn 100000
#define mod 1000003
int n;
int head[mod+5],nxt[mod+5],t[mod+5];
int num;
int a[maxn*2+5],b[maxn*2+5],c[maxn*2+5];
int fa[maxn*2+5];
int ask(int x)
return 0;
}int add(int x)
int find(int x)
return fa[x]=find(fa[x]);
}void init()
memset(head,-1,sizeof(head));
memset(nxt,-1,sizeof(nxt));
num=0;
}bool judge()
} return true;
}int main()
for(int i=1;i<=n;i++)
} for(int i=1;i<=n;i++)
} if(judge()) printf("yes\n");
else printf("no\n");
end: ;
} return 0;
}
洛谷 P1955 NOI2015 程式自動分析
目錄 傳送門 首先看到這種沙雕範圍 109109 直接選擇離散化,然後貌似就是簡單直接的並查集了 我們先將相等關係的 x x y role presentation y y進行合併,然後看不相等關係中的 x x y role presentation y y,如果他們兩個的祖先是一樣的,也就是之前已...
P1955 NOI2015 程式自動分析
給定多個 x i x j 是否相等的條件 判斷能否實現給每個 x i 賦上合適的值滿足條件 考慮用並查集實現 若兩個數相等,則表示它們的祖先相同 給出的條件要先排序,把所有相同的條件放在前面先處理 數的範圍很大,並查集陣列開不下,需要離散化一下 pragma gcc optimize 3 inclu...
P1955 NOI2015 程式自動分析
題意 略 這東西應該都能看懂 思路先排序,把所有e 1的操作放在前面,然後再進行e 0的操作,在進行e 1的操作的時候,我們只要把它約束的兩個變數放在同乙個集合裡面即可。再e 0,即存在一條不相等的約束條件,對於它約束的兩個變數,如果在乙個集合裡面,那就不可能滿足!如不相等的約束條件都滿足,那就ye...