待补 重要思考:求给无向图定向使得其变为DAG的方案数
今天比赛考到了,不会,丢了 100 分。
rk2,380 -> rk15,280
别问为什么 T4 没过,因为不会 T2。
方法一
令
考虑 DAG 的分解构造过程,可以将其分为出/入度等于
关于容斥系数:有机会总结一下。关于本题,设
可以构造
枚举子集复杂度
code
const int N = 20;
const int mod = 1e9 + 7;
int n, m;
int to[N];
int f[1 << N], g[1 << N];
inline void qadd(int &a, int b) {
a += b;
if (a >= mod) a -= mod;
}
void calc() {
read(n, m);
rep (i, 1, m) {
int a, b; read(a, b);
--a; --b;
to[a] |= 1 << b;
to[b] |= 1 << a;
}
g[0] = 1;
rep (s, 1, (1 << n) - 1) {
rep (j, 0, n - 1) {
if (s >> j & 1) {
g[s] = g[s ^ (1 << j)] & ((s & to[j]) == 0);
break;
}
}
}
f[0] = 1;
rep (s, 1, (1 << n) - 1) {
for (int t = s; t; t = (t - 1) & s) {
if (g[t] && f[s ^ t]) {
if (__builtin_popcount(t) & 1) qadd(f[s], f[s ^ t]);
else qadd(f[s], mod - f[s ^ t]);
}
}
}
write(f[(1 << n) - 1]);
}
方法二
貌似子集卷积,记得补
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗