ARC115D-Odd Degree【dp,欧拉回路】

正题

题目链接:https://atcoder.jp/contests/arc115/tasks/arc115_d


题目大意

给出nnn个点mmm条边的一张无向图,对于每个k∈[1,n]k\in[1,n]k[1,n] 求恰好有kkk个奇数入度点的生成子图数量。

1≤n,m≤50001\leq n,m\leq 50001n,m5000


解题思路

考虑有kkk个奇入度点的图有什么性质,既然是入度的奇偶性可以从欧拉回路入手。新建一个点,向一张有kkk个入度为奇数的点的图上的kkk个点连边,那么有且仅有一个方案使得图存在欧拉回路。

所以我们可以先随便向图上的kkk个点连边,然后再找图上存在欧拉回路的图的数量。至于怎么寻找存在欧拉回路的图的数量,首先我们搞出一棵图的生成树,显然树上不存在欧拉回路,而所有的环(也就是存在欧拉回路的图)都可以由每条树边构成的环选出若干个将重复的部分取反得到。

所以nnn个点mmm条边的连通图的欧拉回路数量就是2m−n+12^{m-n+1}2mn+1,如果而我们提前连接了kkk条边的点必须选择,所以这些边不会增加欧拉回路的数量,所以答案就是(nk)×2m−n+1\binom{n}{k}\times 2^{m-n+1}(kn)×2mn+1

然后会发现还是有点问题,因为图没有保障连通,那么设fif_{i}fi表示目前连接了iii条新边的方案,然后每个连通块暴力转移就好了。

时间复杂度:O(n2)O(n^2)O(n2)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=5100,P=998244353;
struct node{ll to,next;
}a[N<<1];
ll n,m,sun,sum,tot,ls[N],C[N][N],pw[N<<1],f[N];
bool v[N];
void addl(ll x,ll y){a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;return;
}
void dfs(ll x){v[x]=1;sun++;for(ll i=ls[x];i;i=a[i].next){sum++;if(!v[a[i].to])dfs(a[i].to);}return;
}
signed main()
{scanf("%lld%lld",&n,&m);for(ll i=1,x,y;i<=m;i++){scanf("%lld%lld",&x,&y);addl(x,y);addl(y,x);}C[0][0]=pw[0]=1;for(ll i=1;i<N*2;i++)pw[i]=pw[i-1]*2ll%P;for(ll i=1;i<=n;i++)for(ll j=0;j<=i;j++)C[i][j]=(C[i-1][j]+(j?C[i-1][j-1]:0))%P;f[0]=1;for(ll i=1;i<=n;i++)if(!v[i]){sum=sun=0;dfs(i);sum/=2;for(ll j=n;j>=0;j--){if(j&1)continue;f[j]=f[j]*pw[sum-sun+1]%P;for(ll k=2;k<=min(sun,j);k+=2)(f[j]+=f[j-k]*pw[sum-sun+1]%P*C[sun][k]%P)%=P;}}for(ll i=0;i<=n;i++)printf("%lld\n",f[i]);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317951.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【用梨泰院class中的财阀世家带你洞悉替罪羊树】Scapegoat Tree原理,模板,例题

我想写在前面&#xff0c;本文财阀世家全是虚构&#xff0c;没有诋毁之意&#xff0c;如有雷同&#xff0c;纯属巧合 红色预警&#xff01;&#xff01;&#xff01;红色预警 文章目录Scapegoat Tree概念模板变量声明Bad函数判断是否需要重构理解模板rebuild重构理解模板inser…

领域驱动设计,让程序员心中有码(五)

1 从搬砖谈领域对象有一个古老的故事&#xff0c;大概是这样的。作者问三个建筑工地上的工人他们在干什么&#xff1f;有一个没精打采的说&#xff0c;我在挖洞&#xff01;而另一一个人却说&#xff0c;我在盖一座房子。还有一个人说&#xff0c;我在建立一座巨大的城市。…

spoj Favorite Dice(概率dp+期望)

题意&#xff1a; 摇一个n面的骰子&#xff0c;问每一面都被摇到的次数期望是多少。 题解&#xff1a; 概率dp往往都是倒着推 我们设dp[x]表示已经摇到了x个面&#xff0c;还要摇的概率次数 那么dp[n] 0(即一次还没摇) dp[0]就是答案 对于dp[i],我们考虑当前已经摇到i个面&…

AT3968-[AGC025E] Walking on a Tree【构造】

正题 题目链接:https://www.luogu.com.cn/problem/AT3968 题目大意 给出nnn个点的一棵树&#xff0c;然后给出mmm条路径。每条边的权值是它是否又被正向经过是否又被反向经过&#xff0c;给每条路径定向使得所有边的权值和最大。输出方案。 1≤n,m≤20001\leq n,m\leq 20001≤…

CF512D Fox And Travelling(DP 计数)

CF512D Fox And Travelling 给定一张 \(n\) 个点 \(m\) 条边的无向图&#xff0c;每次选择一个叶子结点并将它和连接它的边删除。 对于每个 \(k\in[0,n]\)&#xff0c;问有序选择 \(k\) 个点的方案数。 \(n\le 100\)。 显然如果有环&#xff0c;那么所有环上的点都无法被选择&a…

.NET Core实战项目之CMS 第十四章 开发篇-防止跨站请求伪造(XSRF/CSRF)攻击处理...

通过 ASP.NET Core&#xff0c;开发者可轻松配置和管理其应用的安全性。 ASP.NET Core 中包含管理身份验证、授权、数据保护、SSL 强制、应用机密、请求防伪保护及 CORS 管理等等安全方面的处理。 通过这些安全功能&#xff0c;可以生成安全可靠的 ASP.NET Core 应用。而我们这…

模板:左偏树

文章目录解析可以解决的问题定义&#xff1a;左偏树的基本性质基本结论操作合并访问与删除堆顶元素插入元素批量插入删除已知元素所谓左偏树&#xff0c;就是往左偏的树 下面介绍一下它的一个兄弟&#xff1a; 《右偏树》 &#xff08;逃&#xff09; 解析 所谓左偏树&#…

迎开学水题狂欢赛(舞踏会[dp+三叉树],HH去散步[矩阵快速幂],排序[模拟],铁路旅行[线段树])

快速简单记录老师口胡&#xff08;可能就我自己看得懂了吧…&#xff09; 文章目录T1&#xff1a;舞踏会titlesolutioncodeT2&#xff1a;HH去散步titlesolutioncodeT3&#xff1a;排序titlesolutioncodeT4&#xff1a;铁路旅行titlesolutioncodeT1&#xff1a;舞踏会 title …

P2619 [国家集训队]Tree I(K 度限制生成树 二分)

P2619 [国家集训队]Tree I 一张 \(n\) 个点 \(m\) 条边的带权无向联通图&#xff0c;每条边是黑色或白色。求一棵最小权的恰好有 \(need\) 条白色边的生成树&#xff0c;题目保证有解。 \(n\le 5\times 10^4,m\le 10^5,val\in[1,100]\)。 \(\color{yellow}{\bigstar\texttt{Tri…

CSP2021提高组复赛解析

前言 终于出成绩了我可以写博客辣&#xff0c;官方数据还没出就先放洛谷的题目链接了。 正题 T1-廊桥分配 https://www.luogu.com.cn/problem/P7913 题目大意 有m1m_1m1​种一类飞机&#xff0c;m2m_2m2​种二类飞机&#xff0c;每个飞机有一个占用时间的区间。要给两类飞机…

一起开心集训队第一周训练赛2021/3/14

文章目录比赛链接A CodeForces 1481D AB Graph题意&#xff1a;题解&#xff1a;代码&#xff1a;B CodeForces 1481E Sorting Books题意&#xff1a;题解&#xff1a;代码&#xff1a;C CodeForces 1478D Nezzar and Board题意&#xff1a;题解&#xff1a;代码&#xff1a;D …

9.27模拟:至暗时刻

黑暗使人清醒 前言 15pts 00150 总的来说&#xff0c;就是能切的没切掉&#xff0c;不该挂的分全挂了 呜呜呜 考场 先看题 有构造专题那味了 感觉题目都好奇怪啊… 似乎T1看起来相对比较水的样子 T2感觉可能是奇怪的模型&#xff0c;也许可做&#xff1f; T3这是甚么玩意。。…

使用Azure DevOps持续集成GitHub项目

点击蓝字关注我微软的Azure DevOps是一款软件开发管理工具&#xff0c;整合了需求、代码、编译、测试、发布等所有功能于一身。今天我们就来看看如何用Azure DevOps对自己GitHub上的项目做持续集成&#xff0c;并能在GitHub显示最新编译状态。其实在不久之前&#xff0c;Azure …

[BZOJ 3811]玛里苟斯(线性基)尽量理解的题解

文章目录titlesolutioncodetitle 魔法之龙玛里苟斯最近在为加基森拍卖师的削弱而感到伤心&#xff0c;于是他想了一道数学题。 S 是一个可重集合&#xff0c;S{a1,a2,…,an}。 等概率随机取 S 的一个子集 A{ai1,…,aim}。 计算出 A 中所有元素异或和&#xff0c;记为 x, 求 x^…

CF464E The Classic Problem(线段树 最短路)

CF464E The Classic Problem \(\bigstar\texttt{Hint}\)&#xff1a;发现没有什么好的突破口&#xff1f;为什么不想想怎样才能实现题目中 \(2^x\) 的加减法呢&#xff1f; 可见每次加减法&#xff0c;我们要做的是将添加的 \(1\) 和右边的连续的 \(1\) 合并为一整段&#xff0…

9.28模拟

fuckingqytandAstaAKIOI\texttt{fucking qyt and Asta AK IOI}fucking qyt and Asta AK IOI 前言 200pts&#xff08;lemon&#xff09;01001000 340pts&#xff08;996&#xff09;10010010040 T4是lemon的数据锅掉了 T1本地洛谷996都能过&#xff0c;lemon蜜汁RE。。。 枯了…

C. Longest Simple Cycle

C. Longest Simple Cycle 题意&#xff1a; 有n条链&#xff0c;第i条链上有c[i]个点&#xff0c;a[i]为第i条链的顶点与第i-1条链的连接点&#xff0c;b[i]为第i条链的最后一个点与第i-1条链的连接点。通过上面的方法连接链会产生很多的环&#xff0c;问这些环的最大长度。 …

【CF813F】Bipartite Checking(线段树分治+可删除并查集)

文章目录titlesolutioncodetitle You are given an undirected graph consisting of n vertices. Initially there are no edges in the graph. Also you are given q queries, each query either adds one undirected edge to the graph or removes it. After each query you…

在.Net Core WebAPI下给Swagger增加导出离线文档功能

一丶前言最近刚接触到Swagger&#xff0c;在github上下载了它的源码和demo学习了一遍&#xff0c;发现这个组件非常好用&#xff0c;不过不足的是它没有导出离线文档的功能&#xff0c;于是乎我就想给它加一个导出功能Swagger Github开源地址二丶思路其实说白了api文档就是一个…

P7920-[Kubic]Permutation

正题 题目链接:https://www.luogu.com.cn/problem/P7920 题目大意 一个排列ppp生成的森林的形式如下&#xff0c;对于每个iii找到最大的j∈[1,i)j\in [1,i)j∈[1,i)满足 pi>pjp_i>p_jpi​>pj​&#xff0c;然后连一条i,ji,ji,j之间的边。 给出一张树GGG&#xff0c;…