题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2169

如果之前都去好重了,可以看作这次连的边只会和上一次连的边重复。

可以认为从上上次的状态到这次的状态,转移的过程对于上上次的每个状态来说都是把剩余位置所有连边的可能性遍历了恰好一遍!即,当前连了 i 条边,与上次连的边重复的数量就是 C(n,2)-(i-2)(n个点里选2个是一共有多少空位放边,上上次已经放了 i-2 条,这次与上次可以重复的位置有该式那么多个)。

关于同种方案因为连边顺序不同导致的重复计数,只要每次算好一条边之后除以 i 即可;意即对每一种方案,这次放的边可以在已经放的 i 条边中的任意一条,导致重复。不这样去重而最后除以所填边数的阶乘是不行的,因为自己的转移在由有重复的状态转移来的时候不成立。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,mod=;
int n,m,t,dp[N][N];
bool deg[N];
int rdn()
{
int ret=;bool fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
while(ch>=''&&ch<='') ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
return fx?ret:-ret;
}
int calc(int a){return (a*(a-)>>)%mod;}
int pw(int x,int k)
{
int ret=;while(k){if(k&)ret=ret*x%mod;x=x*x%mod;k>>=;}return ret;
}
int main()
{
n=rdn(); m=rdn(); t=rdn();
for(int i=,u,v;i<=m;i++)
{
u=rdn(); v=rdn();
deg[u]=!deg[u]; deg[v]=!deg[v];
}
int cnt=;
for(int i=;i<=n;i++) cnt+=deg[i];
dp[][cnt]=;
for(int i=;i<=t;i++)
{
int d=pw(i,mod-);
for(int j=;j<=n;j++)
{
dp[i][j]=dp[i-][j]*j%mod*(n-j)%mod;
dp[i][j]=(dp[i][j]+dp[i-][j+]*calc(j+))%mod;
if(j>=)
dp[i][j]=(dp[i][j]+dp[i-][j-]*calc(n-j+))%mod;
if(i>)dp[i][j]-=dp[i-][j]*(calc(n)-(i-))%mod;
if(dp[i][j]<)dp[i][j]+=mod;
dp[i][j]=dp[i][j]*d%mod;
}
}
printf("%d\n",dp[t][]%mod);
return ;
}

最新文章

  1. Timequest GUI
  2. unity 角色旋转
  3. Xamarin的不归路-使用Gorilla Player实时预览XAML
  4. 使用VMware 安装Linux CentOS7
  5. volatile关键字与线程间通信
  6. 循序渐进Python3(三) -- 1 -- 内置函数
  7. Oracle多个服务各代表什么作用(转)
  8. inner join
  9. BZOJ 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐( LIS )
  10. 推荐一些C#相关的网站、资源和书籍 (转载自http://www.cnblogs.com/jiangxiaofan/p/3808316.html)
  11. Unity User Group 北京站:《Unity5.6新功能介绍以及HoloLens开发》
  12. 选择客栈noip2011
  13. python学习:猜数字游戏
  14. Storm入门(十)Twitter Storm: Transactional Topolgoy简介
  15. animate-queue和step-animate
  16. zblog如何更改数据库配置以及生效
  17. python类的动态属性设置
  18. placeholder解决兼容各种IE浏览器的方法
  19. iis 发布mvc
  20. Linux中用find命令查找当前文件夹下的.elf文件

热门文章

  1. angular - 小结
  2. matplotlib简易新手教程及动画
  3. Django-model_form
  4. Active Directory虚拟机搭建域控服务器环境
  5. Linux学习笔记——例说makefile 综合案例
  6. openh264 在 osx 上的 nasm 问题
  7. PHP框架的基本原理以及选择标准
  8. 发送邮件程序报错454 Authentication failed以及POP3和SMTP简介
  9. 2809: [Apio2012]dispatching
  10. 最简单的 IntelliJ IDEA 中使用 GitHub 进行版本控制教程(持续更新中)