bzoj4195: [Noi2015]程式自動分析(離散化+並查集)
題目傳送門
。
解法:
相等的可以用一個並查集維護在一起。
那麼當所有相等的都連好以後。
問所有不相等的。如果不相等的在同一個塊那麼說明有問題。。
離散化是顯然的啦
程式碼實現:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std;
struct node {int s,id;}a[2100000],b[2100000];
struct trnode {int x,y,next;}e[2100000];int len,last[1100000];
void ins(int x,int y) {len++;e[len].x=x;e[len].y=y;e[len].next=last[x];last[x]=len;}
bool cmp(node n1,node n2) {return n1.s<n2.s;}int v[1100000];bool bo[1100000];
int fa[1100000];int findfa(int x) {if(x!=fa[x])fa[x]=findfa(fa[x]);return fa[x];}
int main() {
int T;scanf("%d",&T);
while(T--) {
int n;scanf("%d",&n);int t=0;
for(int i=1;i<=n;i++) {
t++;scanf("%d",&a[t].s);a[t].id=i;
t++;scanf("%d",&a[t].s);a[t].id=i;
scanf("%d",&v[i]);
}sort(a+1,a+1+t,cmp);
int tt=0;memset(bo,false,sizeof(bo));
for(int i=1;i<=t;i++) {
if(a[i].s!=a[i-1].s)tt++;
if(bo[a[i].id]==false) {bo[a[i].id]=true;b[a[i].id*2-1].s=tt;}
else b[a[i].id*2].s=tt;
}for(int i=1;i<=tt;i++)fa[i]=i;
len=0;memset(last,0,sizeof(last));
for(int i=1;i<=n;i++) {
int x=b[i*2-1].s,y=b[i*2].s;
if(v[i]==1) {
int xx=findfa(x),yy=findfa(y);
if(xx!=yy)fa[xx]=yy;
}
}
bool bk=true;
for(int i=1;i<=n;i++) {
int x=b[i*2-1].s,y=b[i*2].s;
if(v[i]==0) {
int xx=findfa(x),yy=findfa(y);
if(xx==yy){bk=false;break;}
}
}
if(bk==false)printf("NO\n");
else printf("YES\n");
}
return 0;
}
相關文章
- 【並查集】【離散化】[NOI2015] 程式自動分析並查集
- C128 並查集+離散化 P1955 [NOI2015] 程式自動分析並查集
- BZOJ 4195 程式自動分析【並查集+離散化】並查集
- 洛谷題單指南-集合-P1955 [NOI2015] 程式自動分析
- 離散化
- 並查集到帶權並查集並查集
- 自動查詢並分析快遞的物流狀態
- 並查集系列之「思路優化」並查集優化
- 查並集
- 【並查集】【帶偏移的並查集】食物鏈並查集
- 並查集系列之「思路最佳化」並查集
- 【題解】Solution Set - NOIP2024集訓Day8 並查集和可持久化並查集並查集持久化
- 並查集(一)並查集的幾種實現並查集
- 3.1並查集並查集
- 並查集(小白)並查集
- [leetcode] 並查集(Ⅱ)LeetCode並查集
- [leetcode] 並查集(Ⅲ)LeetCode並查集
- [leetcode] 並查集(Ⅰ)LeetCode並查集
- BZOJ 3673 可持久化並查集 by zky 可持續化線段樹+並查集啟發式合併持久化並查集
- 二維座標離散化模板
- 【離散優化】覆蓋問題優化
- Making the Grade POJ - 3666(離散化+dp)
- 淺談並查集並查集
- 食物鏈(並查集)並查集
- 並查集跳躍並查集
- 各種並查集並查集
- 寫模板, 並查集。並查集
- 並查集(Union Find)並查集
- The Door Problem 並查集並查集
- 並查集練習並查集
- 並查集應用並查集
- 並查集的使用並查集
- 並查集(二)並查集的演算法應用案例上並查集演算法
- 並查集系列之「基於size的優化」並查集優化
- 並查集系列之「基於rank的優化」並查集優化
- 自動控制原理(考研)理論篇--第七章(線性離散系統的分析與校正)
- 程式碼風格統一: 使用husky, prettier, eslint在程式碼提交時自動格式化,並檢查程式碼。EsLint
- 自動化漏洞挖掘:靜態程式分析入門