t1:對於每條邊,求刪了這條邊原圖能否成為二分圖,點邊規模2e6
解法:首先判掉無奇環和乙個奇環的情況
一條邊合法當且僅當其屬於所有奇環的交集且不屬於任何乙個偶環(會構成新的奇環)
那就弄個dfs樹,對於每條返祖邊樹上差分一下,奇環+1偶環-1,最後看差分值是否為奇環個數即可
code:
#include
using
namespace std;
inline
intread()
while
(isdigit
(ch)
)return res*f;
}const
int n=
2e6+5;
int vis[n<<1]
,head[n<<1]
,nxt[n<<1]
,tot=1;
inline
void
add(
int x,
int y)
int dep[n]
,pt[n]
,f[n]
,cnt,tmp;
void
dfs(
int v,
int fa)}}
int ans[n]
,cntans=0;
inline
void
dfs2
(int v,
int fa)
intmain()
for(
int i=
1;i<=n;i++)if
(!pt[i]
) dep[i]=1
,dfs
(i,0);
if(!cnt)
memset
(pt,0,
sizeof
(pt));
for(
int i=
1;i<=n;i++)if
(!pt[i]
)dfs2
(i,0);
if(cnt==
1) ans[
++cntans]
=tmp;
sort
(ans+
1,ans+cntans+1)
; cout<"\n"
;for
(int i=
1;i<=cntans;i++
) cout<<<
" ";
return0;
}
t2:乙個字串和乙個陣列,陣列某一位的值表示乙個字串的字尾,支援在前端插入乙個字元,單點修改陣列內某個位置的值,查詢陣列某個區間內的所有字尾中字典序最小的
解法:顯然字尾平衡樹,順便%一發zxyoi考場現推字尾平衡樹模板ac
其實可以把串倒過來,然後線段樹維護陣列每個位置,區間求min,min的比較用二分雜湊即可,nlo
g2
nnlog^2n
nlog2n
但可能會被卡常
#include
using
namespace std;
inline
intread()
while
(isdigit
(ch)
)return res*f;
}const
int n=
2e6+5;
int vis[n<<1]
,head[n<<1]
,nxt[n<<1]
,tot=1;
inline
void
add(
int x,
int y)
int dep[n]
,pt[n]
,f[n]
,cnt,tmp;
void
dfs(
int v,
int fa)}}
int ans[n]
,cntans=0;
inline
void
dfs2
(int v,
int fa)
intmain()
for(
int i=
1;i<=n;i++)if
(!pt[i]
) dep[i]=1
,dfs
(i,0);
if(!cnt)
memset
(pt,0,
sizeof
(pt));
for(
int i=
1;i<=n;i++)if
(!pt[i]
)dfs2
(i,0);
if(cnt==
1) ans[
++cntans]
=tmp;
sort
(ans+
1,ans+cntans+1)
; cout<"\n"
;for
(int i=
1;i<=cntans;i++
) cout<<<
" ";
return0;
}
t3:雅禮wc2019集訓traffic 記錄CSP題解
化學方程式 string fomular unordered mapint mymap struct element void processword string word,int type if flag num 1 while lo hi elseif isupper word lo lo e...
csp模擬補題
咕咕東是個貪玩的孩子,有一天,他從上古遺跡中得到了乙個神奇的圓環。這個圓環由字母表組成首尾相接的環,環上有乙個指標,最初指向字母a。咕咕東每次可以順時針或者逆時針旋轉一格。例如,a順時針旋轉到z,逆時針旋轉到b。咕咕東手裡有乙個字串,但是他太笨了,所以他來請求你的幫助,問最少需要轉多少次。解題過程 ...
csp模擬 模擬測試16
fdasds include using namespace std define cle a memset a,0,sizeof a inline int read const int mod 1e9 7,maxn 1e3 100 int n,m,ans 0 int f maxn maxn int...