首页 > TAG信息列表 > 州区

「WC2018」州区划分 题解

Solution 注意到 \(n\le21\),优先考虑状压。 记全集为 \(U\),\(f_S\) 为点集 \(S\) 的所有合法的划分方案的满意度之和,\(\operatorname{Sum}(S)\) 为点集 \(S\) 的人口和,即 \(\sum_{x\in S}w_x\),\(g_S\) 为点集 \(S\) 是否合法(合法为 \(1\),否则为 \(0\))。根据题意可写出如下转移方程

luogu P4221 [WC2018]州区划分

题面传送门 判欧拉回路写错调了一个多小时 首先可以\(O(2^nm)\)处理出哪些是可以选的就有了\(O(n3^n)\)的爆枚子集的做法。 不难想到子集卷积,但是子集卷积是卷两个没有关系的数组,但是这个是自己卷自己。 容易发现一个数枚举子集的过程是不可能从二进制和它个数相同的数拿答案的,这

P4221 [WC2018]州区划分 无向图欧拉回路 FST FWT

LINK:州区划分 把题目中四个条件进行规约 容易想到不合法当前仅当当前状态是一个无向图欧拉回路. 充要条件有两个 联通 每个点度数为偶数. 预处理出所有状态. 然后设\(f_i\)表示组成情况为i的值. 枚举子集转移 可以发现利用FST进行优化. FST怎么做?详见另一篇文章史上最详细FST解释

[WC2018]州区划分(FWT,FST)

[WC2018]州区划分(FWT,FST) Luogu loj 题解时间 经典FST。 在此之前似乎用到FST的题并不多? 首先预处理一个子集是不是欧拉回路很简单,判断是否连通且度数均为偶数即可。 考虑朴素状压dp很容易得到 $ f_{ S } = \sum\limits_{ T \subseteq S } f_{ S - T } \times ( \frac{ val_{ T } }

[题解] LuoguP4221 [WC2018]州区划分

https://www.luogu.com.cn/problem/P4221 首先是一个DP,令\(dp(S)\)表示考虑了集合\(S\)内的点的满意度总和,于是有转移 \[dp(S) = \frac{1}{f(S)}\sum\limits_{T \subseteq S} dp(T)g(S - T) \]其中\(f(S)\)表示集合\(S\)内所有点\(w\)的和的\(p\)次,\(g(S) = f(S)\times [S\)内点构

[WC2018]州区划分

#include<bits/stdc++.h> #define ll long long #define ull unsigned long long #define rep(i, s, t) for(int i = s, __ = t; i <= __; ++i) #define dwn(i, s, t) for(int i = s, __ = t; i >= __; --i) const int INF = 2147483647; const int MAXN = 31; c

loj2340 WC2018 州区划分 状压dp+FWT

Description 题面到处都有系列。。 Solution FMT是啥,能吃吗 首先考虑怎么判合法子图(也就是欧拉回路),我们n2*2n枚举点然后统计度数就可以了 那么一个比较显然的dp就是设f[S]表示二进制状态为S的所有答案,g[S]表示S这个集合分成一份的贡献 我们枚举S的子集转移即可,这样做是O(3n