模拟测试20191003

Posted mikufun-hzoi-cpp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟测试20191003相关的知识,希望对你有一定的参考价值。

好像一年没写题解了

这次考试好像从开考10min后就没有分了?

T2用错误的题意和错误的代码得出了样例,偷税然鹅爆零了

T3只会打暴力,试着反演然而第一不会证复杂度第二反演已经快忘干净了

T1:天空龙

%%%kx

 

T2:巨神兵

题意大概就是求构成DAG的方案数

既然是DAG理所当然的想到分层

设$ dp[i][j] $表示当前点集为i,最后一层为j的方案数

令$ in(i,j) $表示j中的点都和i中的点有边,$ has[i] $表示能直接到i的点,$ cnt[i] $表示i中1的个数

那么$ dp[i\cup t][t]=\sum \limits_in(j,t),i\cap t== \varnothing dp[i][j]*\prod \limits_p\epsilon t(2^cnt[has[p]\cap j]-1)*(2^cnt[has[p]\cap (i \wedge j)])   $

然而这样复杂度是$ O(4^n*n) $的,考虑一下怎么优化

假设我们把dp第二维去掉,即$ dp[i] $表示当前点集为i的方案数

由于我们仍然分层进行dp,不用考虑出环的情况,那就只剩下了方案重复的情况

考虑容斥,我们让每个sz为奇数的集合对答案加上贡献,为偶数的对答案减去贡献

因为对于点集i|j的一种连边方案,可以有多种方式划分成i,j,

这就意味着不同的i,j可能包含了同样的方案。

于是以j中包含的元素把并集为k的i和j分类

得到转移方程$ dp[i\cup j]=\sum \limits_i\cap j==\varnothing (-1)^cnt[i]+1*dp[i]*\prod \limits_p\in j 2^cnt[has[p]\cap i] $

复杂度$ O(2^n*n) $

 

T3:太阳神

反演快忘干净的蒟若

 

以上是关于模拟测试20191003的主要内容,如果未能解决你的问题,请参考以下文章

[20191003机房测试] 天空龙

[20191003机房测试] 太阳神

单元测试——使用模拟对象做交互测试

模拟测试特征和模拟方法

对于 Java 测试,我应该模拟客户端还是模拟服务器

带有模拟的 MvcTest 是集成测试或单元测试