LOJ#2340.|LOJ#2340. 「WC2018」州区划分

感觉是比较基础的子集 DP.
令 $dp[S]$ 表示点集 $S$ 构成的价值和,然后枚举最后一个区域就行.
如何判断欧拉回路:
所有点的度数都是偶数,就有欧拉回路.
然后在做子集卷积的时候要注意:很多项是无用的,要手动清空.
code:

#include #define N 22 #define ll long long #define mod 998244353 #define lb(x) ((x)&(-(x))) #define setIO(s) freopen(s".in","r",stdin) using namespace std; int n,m,P,lim; int a[N][N],w[N],b[N],vis[N],cnt[1<>=1,x=(ll)x*x%mod) if(y&1) tmp=(ll)tmp*x%mod; return tmp; } int INV(int x) { return qpow(x,mod-2); } void FWT(int *A) { for(int len=1; len=mod?A[i+j+len]-=mod:0; } void IFWT(int *A) { for(int len=1; len=mod?dp[i][k]-=mod:0; IFWT(dp[i]); for(int j=0; j
【LOJ#2340.|LOJ#2340. 「WC2018」州区划分】

    推荐阅读