0%

思路讲解

一个图中,如果所有节点的入度和出度都正好是1,那么这个图必然是由若干个不相交的环组成的。

题目的排列给出保证了所有点的出度和入度都为1。

可以使用并查集维护。特别需要注意的就是siz==2的情况,虽然cnt不统计,但是后续计算当替罪羊的时候要统计。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 只可能偶数个奇数环
if(cnt[1]==2){
// 如果两个奇数环,那么两个不匹配点一定从两个奇数环出
ans=binpow(2,cnt[0])*mul[1];
ans%=mod;
}else if(cnt[1]>=4){ // 奇数环数量大于4,必然无法组成合法对
cout<<0<<"\n";
return;
}else{
vis.assign(N+5,0);
FOR(i,1,N){
if(vis[fa.find(i)]) continue;
vis[fa.find(i)]=true;
ll siz=fa.size(i);
if(siz==2){ // 这里一定不要遗漏
ans+=binpow(2,cnt[0]);
ans%=mod;
}else{
// 选择一黑一白,图的剩余部分必然可以完美匹配(注意一黑一白不一定相邻)
ll t=siz*siz%mod*binpow(4,mod-2);t%=mod;
ans+=binpow(2,cnt[0]-1)*t;
ans%=mod;
}
}
}

AC代码

https://ac.nowcoder.com/acm/contest/view-submission?submissionId=78310781

心路历程(WA,TLE,MLE……)

思路讲解

我们在想问题的时候,只要确定我们检查的数对其他数有没有增加作用,不用太想。

AC代码

https://ac.nowcoder.com/acm/contest/view-submission?submissionId=78290963

心路历程(WA,TLE,MLE……)

思路讲解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
	ll t=binpow(2,tmp,mod),tt=binpow(2,mod-2,mod),tttt=binpow(4,mod-2,mod);
ll ans=0;
A[0]=0;
FOR(i,0,N-1){
if(A[i]==0 && A[i+1]==1){
ans+=t;
ans%=mod;
}else if(A[i]==-1 && A[i+1]==-1){
ans+=t*tttt;
ans%=mod;
}else if(A[i]==0 && A[i+1]==-1){
ans+=t*tt;
ans%=mod;
}else if(A[i]==-1 && A[i+1]==1){
ans+=t*tt;
ans%=mod;
}
#ifdef LOCAL
debug(i);debug(ans);
#endif
}

AC代码

https://ac.nowcoder.com/acm/contest/view-submission?submissionId=78289781

心路历程(WA,TLE,MLE……)

思路讲解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
	// 随着钱数的增加,进行的二操作总是在增加的
function<void(ll,ll,ll,ll)> div=[&](ll k,ll kk,ll p,ll pp)->void{
if(k>kk){
return;
}
ll mid=k+kk>>1;
ll ans=Sum[min(N,mid)];ll mp=0;
FOR(i,p,min(mid/2,pp)){
ll kejia=mid-i*2;
kejia+=i;
kejia=min(kejia,N);
ll lans=(kejia-1+kejia-i)*i/2;
lans+=Sum[kejia];
if(lans>ans){
ans=lans;
mp=i;
}
}
Ans[mid]=ans;
#ifdef LOCAL
debug(mid);
debug(ans);
debug(pp);
#endif
div(k,mid-1,p,mp);
div(mid+1,kk,mp,pp);
};

AC代码

https://www.codechef.com/viewsolution/1173480410

心路历程(WA,TLE,MLE……)

思路讲解

可以看提交链接

AC代码

https://www.codechef.com/viewsolution/1173432221

心路历程(WA,TLE,MLE……)