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

Yahoo Programming Contest 2019.E.Odd Subrectangles(思路 线性基)

时间:2019-02-17 00:57:06      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:time   tco   ...   线性   rect   一个   个数   sts   链接   

题目链接


\(Description\)

给定一个\(n\times m\)\(01\)矩阵。求任意选出\(r\)行、\(c\)列(共\(2^{n+m}\)种方案),使得这\(r\)\(c\)列的交的位置的\(r\times c\)个数的和为奇数,的方案数有多少。
(...我也不知道怎么就表述成这样了,反正挺好理解)
\(n,m\leq300\)

\(Solution\)

假设已经确定了选择某些行,然后把每一行\(m\)个数看做一个\(m\)位二进制数。
如果这些行异或和为\(0\),那怎么选列也不行。
否则每一列异或这些行是\(0\)还是\(1\)是确定的。假设有\(a\)列异或后为\(1\)\(b\)列异或后为\(0\)\(a+b=m\)。我们要从\(a\)中选出奇数个,从\(b\)中随便选,那么方案数是\(2^{a-1}\cdot2^b=2^{m-1}\)(从\(n\)中选出奇数个数的方案数。。\(C_n^1+C_n^3+C_n^5+...=\frac{2^n}{2}=2^{n-1}\))。
也就是不管行怎么选,只要异或和不为\(0\),列就有\(2^{m-1}\)种方案。
异或和不为\(0\)的方案数=\(2^n-\)异或和为\(0\)的方案数。异或和为\(0\)的方案数可以用线性基求,是\(2^{n-r}\)\(n\)是元素总数,\(r\)是矩阵的秩,也就是线性基中的元素个数),所以答案就是\((2^n-2^{n-r})\cdot2^{m-1}\)
这里线性基插入还是一样的,把一行看做\(m\)位数就好了。


Yahoo Programming Contest 2019.E.Odd Subrectangles(思路 线性基)

标签:time   tco   ...   线性   rect   一个   个数   sts   链接   

原文地址:https://www.cnblogs.com/SovietPower/p/10389645.html

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