2020.02.29【NOIP提高组】模拟A 组11比赛总结

2020.02.29【NOIP提高组】模拟A 组11

估分100+0+0=100
实际100+0+0=100
T1:3882. 【NOIP2014模拟】邻近
第一眼想到用线段树,每次查询前驱和后继,再进行修改
但再一想发现可以倒着做,然后用链表维护就可以做到O(n)的了
由于考试时没有想清楚就开始打,并且细节很多没有处理好,所以消耗了大量的时间。

T2:3883. 【NOIP2014模拟】线段树
一开始也想到树链剖分,但是可能会时超,加上没有时间了,就打了个暴力,但是最后还是没有打完,就没有交
实际上此题也是很巧妙地转化了条件,即通过从后往前更新,那么越后面的越优先覆盖,覆盖完的就不用再更新,那么很容易想到用并查集合并到一起就可以了。

T3:3884. 【NOIP2014模拟】电影院
没有什么思路。
推了推式子没推出来,实际上,Ans(n,m)=Ans(1,m)^n*(nm/2)!*2^(nm/2)
先是一列的方案数的n次方,表示n行的不同的排列的方案(没有标号的)
(nm/2)!就是将每对情侣标号排列的方案数
再乘上2^(nm/2)是每对情侣的两个人的位置互换或者说是将每对情侣的两个人再标号的方案
那么问题转换为求一行的方案数
我们可以维护 F[i][j]表示某一行已有 i 对情侣其中 j 对相邻 的方案数,则 F[n][0]即为答案,状态数 n^2,转移复杂度 O(n),时间复杂度 n^2。
F[i][j]=F[i-1][j+2]*(j+2)*(j+1) //插入的当前一对情侣不相邻,均插入到某一对情侣中的情况
+F[i-1][j+1]*(j+1)*(i+i-j-2)*2 //插入的当前一对情侣不相邻其中一个插入到某一对情侣中情况
+F[i-1][j]*(i+i-j-1)*(i+i-j-2) //插入的当前一对情侣不相邻,但未插入到某一对情侣中的情况
+F[i-1][j]*j*2 //插入的当前一对情侣相邻,但未插入到某一对情侣中的情况
+F[i-1][j-1]*(i+i-j)*2; //当 j>0 时,插入当前一对情侣到某一对情侣中的情况
对于 100%的数据 令 ans(m)=Ans(1,m),观察 ans(m)的前几项不难得到 ans(m) = (4m2 − 2m) ∗ ans(m − 1) + (2m − 2) ∗ ans(m − 2)
归纳后得到 Ans(n,m)=2^n*(nm)!*A(m)n 其中 A(0) = 1 A(1) = 0 A(n) = (2n − 1) ∗ A(n − 1) + A(n − 2) 递推求解就能很好地满足题目的要求。

总结:要先想好思路再开始打代码
        把握好时间  

猜你喜欢

转载自blog.csdn.net/zsjzliziyang/article/details/104640078