令f[i][j]表示连i条边时奇点个数为j的方案数,转移时讨论两奇点相连、一奇一偶相连、两偶点相连即可。注意这样会造成重边,那么算出恰好有一条重边的方案数并减掉。由于是有序地考虑每条边,每次还要除以i。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{int x=0,f=1;char c=getchar();while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;
}
#define N 1010
#define P 10007
int n,m,k,degree[N],f[N][N],inv[N],ans,cnt;
int C(int n,int m){return (n*(n-1)>>1)%P;}
int main()
{
#ifndef ONLINE_JUDGEfreopen("bzoj2169.in","r",stdin);freopen("bzoj2169.out","w",stdout);const char LL[]="%I64d\n";
#elseconst char LL[]="%lld\n";
#endifn=read(),m=read(),k=read();for (int i=1;i<=m;i++){int x=read(),y=read();degree[x]^=1,degree[y]^=1;}for (int i=1;i<=n;i++) if (degree[i]) cnt++;inv[0]=1;inv[1]=1;for (int i=2;i<=k;i++) inv[i]=P-(P/i)*inv[P%i]%P;f[0][cnt]=1;for (int i=1;i<=k;i++)for (int j=0;j<=n;j++)f[i][j]=(f[i-1][j+2]*C(j+2,2)%P+f[i-1][j]*j%P*(n-j)%P+(j>=2?f[i-1][j-2]*C(n-j+2,2)%P:0)-(i>=2?f[i-2][j]*(C(n,2)-i+2)%P:0)+P)%P*inv[i]%P;cout<<f[k][0];return 0;
}

转载于:https://www.cnblogs.com/Gloid/p/9557810.html

BZOJ2169 连边(动态规划)相关推荐

  1. 伍六七带你学算法 动态规划 ——不同路径

    力扣 62. 不同路径 难度 中等 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格 ...

  2. 由动态规划计算编辑距离引发的思考

    简单介绍 编辑距离算法: https://www.cnblogs.com/BlackStorm/p/5400809.html https://wizardforcel.gitbooks.io/the- ...

  3. LeetCode 10. Regular Expression Matching python特性、动态规划、递归

    前言 本文主要提供三种不同的解法,分别是利用python的特性.动态规划.递归方法解决这个问题 使用python正则属性 import reclass Solution2:# @return a bo ...

  4. 【动态规划】Part1

    1. 硬币找零 题目描述:假设有几种硬币,如1.3.5,并且数量无限.请找出能够组成某个数目的找零所使用最少的硬币数. 分析:   dp [0] = 0            dp [1] = 1 + ...

  5. 2016.4.2 动态规划练习--讲课整理

    1.codevs1742 爬楼梯  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 小明家外面有一个长长的楼梯,共N阶.小明的腿 ...

  6. 算法设计与分析第4章 动态规划(二)【DP序列问题】

    第3章 动态规划(二)[DP序列问题] 3.2 DP序列问题 (51nod的动态规划教程很不错,讲解很详细,以下分析来自51nod) 1.矩阵取数问题 给定一个m行n列的矩阵,矩阵每个元素是一个正整数 ...

  7. 算法设计与分析第4章 动态规划(一)【背包问题】

    第3章动态规划(一)[背包问题] 基本思想: 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,但是经分解得到的子问题往往不是互相独立的.不同子问题的数目常常只有多项式量级.在用 ...

  8. ADPRL - 近似动态规划和强化学习 - Note 7 - Approximate Dynamic Programming

    Note 7 - 近似动态规划 Approximate Dynamic Programming 7. 近似动态规划 (Approximate Dynamic Programming) 7.1 近似架构 ...

  9. ADPRL - 近似动态规划和强化学习 - Note 6 - Mitigating the Curse of Dimensionality

    Note 6 Mitigating the Curse of Dimensionality 减轻维度诅咒 6. Mitigating the Curse of Dimensionality 减轻维度诅 ...

最新文章

  1. 彻底取代Redis+数据库架构,京东618稳了!
  2. 记录一次生产环境下的jvm内存泄露问题和分析解决过程!
  3. centos linux引导修复_CentOS没了,Linux的新世界来了
  4. 浏览Github必备的5款神器级别的Chrome插件
  5. mysql-5.2 lib_Centos 5.2下安装多个mysql数据库配置详解
  6. 常用HTTP状态码趣(曲)解
  7. Linux块设备概念和列出块设备命令学习
  8. Oracle中的Union、Union All、Intersect、Minus
  9. android+ebook控件,Android 自定义控件 eBook 翻书效果
  10. 让评审人爱上你的8个要点
  11. c语言数据结构将链串里所有值为x的字符删除_redis数据结构与对象到底长什么样?...
  12. python中input数组_python – 在NumPy数组中搜索序列
  13. day05 数据类型
  14. 项目启动会ppt_项目经理实战篇-项目启动会
  15. mysql零碎问题合集
  16. 2010新财富中国富豪榜1至100名
  17. VS2019的C++项目如何查看源文件(.h,.cc.cpp等)所在的工程
  18. 苹果10月23日或发布iPad mini
  19. Android color.xml设置透明度
  20. python opencv人脸识别考勤系统的完整源码

热门文章

  1. 线性结构 -- 连续存储(数组), 1个简单的c语言代码实现.
  2. android信息中字符个数,在android中指定编辑文本中的字符数
  3. php实现复选框删除功能,php怎么实现复选框批量删除
  4. ping 不通容器 宿主_使用容器的正确方式,Docker在雪球的技术实践
  5. was更换java版本,WAS如何更换JDK
  6. 阿里云 FaaS 架构设计与创新实践
  7. GitHub Action + ACK:云原生 DevOps 落地利器
  8. struts2 如何跳转html5,在线HTML编辑器——ueditor,跟struts2结合
  9. html表单没有csrf保护,如何在Symfony 1.4中为表单禁用CSRF保护/验证
  10. linux双4g内存花屏,linux不支持4G内存的处理方法