Orz 出题人石二队爷

我们可以先求出有n个点的联通欧拉图数量,然后使它删或增一条边得到我们要求的方案

也就是让它乘上$C_n^2$ (n个点里选2个点,要么删边要么连边,选择唯一)

那么接下来就是求有n个点的联通欧拉图数量$f[n]$

首先来看欧拉图的定义:

一张无向图为欧拉图,当且仅当无向图连通,并且每个点的度数都是偶数。

那么设共有n个点且所有点度数皆为偶数的方案数为$g[n]$

之后尝试计算出来它

先把一个点拿出来,剩$n-1$个点

从这$n-1$个点中选2个点,这两点之间可以连或不连边

那么如果最终某个点的度数不为偶,就用之前单拿出来的点向他连边

最后有一个问题:如果单拿出来的点度数不为偶呢?

显然不可能。每条边对总度数的贡献为2,所以无重边无自环的话一定满足要求

可得

$g_i=2^{C_{i-1}^2}$

接下来应当让$g$中的方案保证联通即为$f$

正如上场T3一样,考虑总-目标之外

枚举$j=1->i-1$ 得到$f_j$是一部分点满足欧拉图性质的方案数

则$g_{i-j}$是剩下点满足度数为偶的方案数

我们现在要构造除了所求之外的情况,所以从那i个点里拿出一个,从剩下的里面选$j-1$个点连边

$f_i=g_i-\sum \limits_{j=1}^{i-1}{f_j*g_{i-j}*C_{i-1}^{j-1}}$

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int mod=1e9+;
typedef long long ll;
int n;
ll qpow(ll a,ll b)
{
ll res=;
a%=mod;
while(b)
{
if(b&)res=(res*a)%mod;
a=(a*a)%mod;
b>>=;
}
return res%mod;
}
ll C[][],g[],f[];
int main()
{
scanf("%d",&n);
C[][]=;
for(int i=;i<=n;i++)
{
C[i][]=;
for(int j=;j<=n;j++)
C[i][j]=C[i-][j]+C[i-][j-],C[i][j]%=mod;
}
// while(1);
for(int i=;i<=n;i++)
g[i]=qpow(,C[i-][]);
for(int i=;i<=n;i++)
{
f[i]=g[i];
for(int j=;j<=i-;j++)
f[i]=(f[i]-f[j]*g[i-j]%mod*C[i-][j-]%mod+mod)%mod;
}
cout<<f[n]*C[n][]%mod<<endl;
return ;
}

[NOIP模拟测试3] 建造游乐园 题解(欧拉图性质)的更多相关文章

  1. [NOIP模拟测试9]题(Problem) 题解 (组合数全家桶+dp)

    达哥送分给我我都不要,感觉自己挺牛批. $type=0:$ 跟visit那题类似,枚举横向移动的步数直接推公式: $ans=\sum C_n^i \times C_i^{\frac{i}{2}} \t ...

  2. 「题解」NOIP模拟测试题解乱写II(36)

    毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...

  3. NOIP模拟测试17&18

    NOIP模拟测试17&18 17-T1 给定一个序列,选取其中一个闭区间,使得其中每个元素可以在重新排列后成为一个等比数列的子序列,问区间最长是? 特判比值为1的情况,预处理比值2~1000的 ...

  4. 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组

    2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...

  5. 2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色

    2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 数据结构学傻的做法: 对每种颜色开动态开点线段树直接维 ...

  6. 2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci)

    2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需 ...

  7. NOIP模拟测试3「序列·熟练剖分·建造游乐园(play)」

    ---恢复内容开始--- 序列 刚调出来样例就A了,假装是水题. 因为是乱序,我们要求出来每两项之间最小公比,而不是直接比 求出来每两项之间最小公比,然后扫一遍就完了.(还要注意重复情况) 那么问题就 ...

  8. 「题解」NOIP模拟测试题解乱写I(29-31)

    NOIP模拟29(B) T1爬山 简单题,赛时找到了$O(1)$查询的规律于是切了. 从倍增LCA那里借鉴了一点东西:先将a.b抬到同一高度,然后再一起往上爬.所用的步数$×2$就是了. 抬升到同一高 ...

  9. NOIP模拟测试15「建造城市city(插板法)·轰炸·石头剪刀布」

    建造城市 题解 先思考一个简单问题 10个$toot$ 放进5间房屋,每个房屋至少有1个$toot$,方案数 思考:插板法,$10$个$toot$有$9$个缝隙,$5$间房屋转化为$4$个挡板,放在t ...

随机推荐

  1. python 网络编程:socket(二)

    上节地址:Python网络编程:socket 一.send和sendall区别 send,sendall         ret = send('safagsgdsegsdgew') #send 发送 ...

  2. 前端每日实战:80# 视频演示如何用纯 CSS 创作一个自行车车轮

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/XBXEPK 可交互视频 此视频是可 ...

  3. SpringMVC·form表单Date类型问题导致的400问题

    问题描述 前端传yyyy-MM-dd hh:mm:ss格式的时间其实是String类型导致JavaBean中的Date类型Setter报错,从而导致api请求400. 问题解决 我的解决方式: 在对应 ...

  4. 2017《Java技术》预备作业 计科1502任秀兴

    阅读邹欣老师的博客,谈谈你期望的师生关系是什么样的? 我认为,学生和老师的关系,应该亦师亦友.可以以一种朋友的身份去进行教学,是我们理想中的课堂. 在生活中,老师和我们应该多沟通,成为朋友,在有感情的 ...

  5. python正常时间和unix时间戳相互转换的方法

    python正常时间和unix时间戳相互转换的方法 本文实例讲述了python正常时间和unix时间戳相互转换的方法.分享给大家供大家参考.具体分析如下: 这段代码可以用来转换常规时间格式为unix时 ...

  6. VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试

    现在便宜的VPS主机越来越多了,一些美国的VPS主机甚至给出1美元一月的VPS,堪比虚拟主机还要便宜,巨大的价格优势吸引不少人购买和使用,而近些年来国内的主机商也开始意识到便宜的VPS对草根站长的诱惑 ...

  7. springboot Service层单元测试

    两个实现类实现同一个Service接口 public interface CustomUrlService { List<ShopMetrics> getShopMetrics(); } ...

  8. linux系统:go build报错import cycle not allowed

    go build 困扰我多时的 go 编译报错:循环导入,代码肯定是没问题的,网上查说重新安装go 我觉得也不是太好的办法 import cycle not allowed package day01 ...

  9. bat批处理----copy和xcopy区别

    copy和xcopy区别:两者都可以赋值文件 1.copy不能在有子目录存在的文件中拷贝文件的同时重命名此文件名 2.copy命令能合并两个文件,而xcopy不能

  10. PAT 乙级练习题1002. 写出这个数 (20)

    1002. 写出这个数 (20) 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式 ...