码迷,mamicode.com
首页 > 其他好文 > 详细

省选模拟五十六 题解

时间:2020-03-28 23:08:29      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:复杂度   class   暴力   一个   线段树   inline   span   mat   交换   

T1
异或和为0则先手必败
\(dp[i][j][k]\)代表考虑到\(i\)选了\(j\)个数(对\(d\)取模)异或和为\(k\)的方案数
假如把\(a\)从大到小排序的话便可以剪枝:
第三维是\(2^b\)(b是满足\(2^b>a[i]\)的第一个数)
复杂度\(O(1e7*d)\)

T2
\(f[i][j][k]\)代表从S走k步到T不经过S,T的方案数
\(g[i][j][k]\)代表从S走k步到T的方案数
\(h[i][j][k]\)代表从S走k步到S不经过T的方案数
\(g\)可以暴力求出来
则有转移:
\(f[S][T][d]=g[S][T][d]-\sum_{i=1}^{d-1}f[S][T][i]*g[T][T][d-i]+h[S][T][i]*g[S][T][d-i]\)
\(h[S][T][d]=g[S][T][d]-\sum_{i=1}^{d-1}h[S][T][i]*g[S][S][d-i]+f[S][T][i]*g[T][S][d-i]\)
很教科书

T3
打暴力会发现可以把行列交换
\(f[i]\)代表\(i\)这行是否被操作,\(g[i]\)是列
那么这轮后\((i,j)\)变成\(f[i]\ xor\ g[j]\)
然后把f/g=1的全部放到上/左面
现在便成了一个\(2*2\)的矩阵
每个矩阵里的数字在第一轮及以后后一定都是一样的
拿线段树求出初始状态后模拟即可

省选模拟五十六 题解

标签:复杂度   class   暴力   一个   线段树   inline   span   mat   交换   

原文地址:https://www.cnblogs.com/AthosD/p/12589845.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!