Wannafly挑战赛13 zzf的好矩阵 题解

链接:https://ac.nowcoder.com/acm/contest/80/C

分析

  1. 每个格子都有至少一个麦穗
  2. 每个格子最多只能有p*p个麦穗
  3. 任意两个格子的麦穗数不同

结论1

由以上三点易得所有格子的麦穗数为p2p^2p2的全排列。

结论2

对于一个已知的一个符合题意的矩阵,行任意交换,列任意交换,或者所有行列进行转置,所得的矩阵仍然是一个符合条件的解。易得,如此一个基本解可以构造出2∗(p!)22*(p!)^22∗(p!)2个互不相同的解。


转置乘以2.行的顺序有p!p!p!种,列的顺序有p!p!p!种。

结论3

不考虑转置、行列交换等变换,本质不同的解有且只有一个。

以下主要是从不重不漏出发,逐步逼近,找到C(带子)需要满足的条件,最终确定可行的c与r.


用ri,cj,ai,jr_i,c_j,a_{i,j}ri​,cj​,ai,j​分别表示第iii行选中的次数、第jjj列选中的次数,iii行jjj列的麦穗数。

ai,j=ri+cja_{i,j}=r_i+c_jai,j​=ri​+cj​.

r=(r1,r2,r3,...,rp)r=(r_1,r_2,r_3,...,r_p)r=(r1​,r2​,r3​,...,rp​)

c=(c1,c2,c3,...,cp)c=(c_1,c_2,c_3,...,c_p)c=(c1​,c2​,c3​,...,cp​).

对于麦穗数为1的格子,显然只能分解成1+01+01+0或者0+10+10+1.

为了本质不同的解,我们不妨设行和列的选取数从小到大,且第一列取1,第一行取0.即:

r1<r2<r3<...<rp;c1<c2<c3<...<cp;c1=1,  r1=0.r_1 \lt r_2 \lt r_3 \lt ... \lt r_p;\\
c_1 \lt c_2 \lt c_3 \lt ... \lt c_p; \\
c_1 = 1,\;r_1=0.r1​<r2​<r3​<...<rp​;c1​<c2​<c3​<...<cp​;c1​=1,r1​=0.

如此,确定一对r,cr,cr,c就确定了一个基本的解。

容易验证c=(1,2,3,4,...,p),r=(0,p,2p,3p,...,(p−1)p)c=\left(1,2,3,4,...,p\right), r=\left(0,p,2p,3p,...,(p-1)p\right)c=(1,2,3,4,...,p),r=(0,p,2p,3p,...,(p−1)p)是一个解。

接下来要说明只有这一组基本解。


C数组对应带子说明

空白长度论述

不断移动C数组锁画出的这条带子,注意需要满足以下两点要求:

  1. 1-p21\text{-}p^21-p2的中每一个格子都被黑色覆盖一次且仅一次(即不重不漏)。
  2. rir_iri​其实就是第iii次移动相比于初始位置的总的位移量。
  3. 为了不漏,移动之后,下一次带子的开头应对应于还没覆盖的第一个空白格子。

    根据不重不漏,容易推出以下结论。



    l白=kll_{白}=kll白​=kl

后续黑色长度论述



l′=ll^{'}=ll′=l

并且用不重不漏容易推出如果后面还有白色段,则长度一定和前面的白色段等长,再有黑色段,则又和最开始的黑色段等长……

能“密铺”的带子形式及特征



其中l黑=l,l白=kll_{黑}=l,l_{白}=kll黑​=l,l白​=kl

共有k1k_1k1​个kl白+l黑片段。

带子移动k次,加上原本的不移动的一条,则刚好不重不漏的“密铺”了连续的一段。之后只需要按照前面的整体右移即可。

下图是k=3的例子:



带子黑色总长度:

p=(k1+1)lp=(k_1+1)lp=(k1​+1)l

“密铺”一段长度:

l+k1(kl+l)+kl=k1kl+(k+k1+1)ll+k_1(kl+l)+kl=k_1kl+(k+k_1+1)ll+k1​(kl+l)+kl=k1​kl+(k+k1​+1)l

由于ppp是素数。

  1. k1=0,l=pk_1 = 0,l=pk1​=0,l=p,则带子只有第一块黑色的片段,长度为p,故c=(1,2,3,...,p)c=(1,2,3,...,p)c=(1,2,3,...,p),显然要密铺满1−p21-p^21−p2可得r=(0,p,2p,3p,...,(p−1)p)r=(0,p,2p,3p,...,(p-1)p)r=(0,p,2p,3p,...,(p−1)p).或者
  2. k1=p−1,l=1k_1 = p-1,l=1k1​=p−1,l=1,则带子有ppp块黑色的片段,每两个黑色片段之间有一块长度为kkk的白色片段。密铺总长度应该是p2p^2p2的因数。

    p2=k2[k1kl+(k+k1+1)l]=k2[(p−1)k+(k+p)]=k2(k+1)p⇒p=k2(k+1)p^2=k_2\left[k_1kl+(k+k_1+1)l\right]\\=k_2\left[(p-1)k+(k+p)\right]\\=k_2(k+1)p \Rightarrow\\
    p=k_2(k+1)p2=k2​[k1​kl+(k+k1​+1)l]=k2​[(p−1)k+(k+p)]=k2​(k+1)p⇒p=k2​(k+1)



    2.a. k2=1,k=p−1k_2=1,k=p-1k2​=1,k=p−1或

    2.b. k2=p,k=0k_2=p,k=0k2​=p,k=0

    对于2.a可得c=(1,p+1,2p+1,...,(p−1)p+1),r=(0,1,2,3,4,...,p−1)c=(1,p+1,2p+1,...,(p-1)p+1), r=(0,1,2,3,4,...,p-1)c=(1,p+1,2p+1,...,(p−1)p+1),r=(0,1,2,3,4,...,p−1)

    对于2.b可得c=(1,2,3,4,...,p),r=(0,p,2p,3p,...,(p−1)p)c=(1,2,3,4,...,p),r=(0,p,2p,3p,...,(p-1)p)c=(1,2,3,4,...,p),r=(0,p,2p,3p,...,(p−1)p)

综上1,2.a,2.b

cα=(1,2,3,4,...,p),&ThickSpace;rα=(0,p,2p,3p,...,(p−1)p);cβ=(1,p+1,2p+1,...,(p−1)p+1),&ThickSpace;rβ=(0,1,2,3,4,...,p−1)c_{\alpha}=(1,2,3,4,...,p),\;r_{\alpha}=(0,p,2p,3p,...,(p-1)p);\\
c_{\beta}=(1,p+1,2p+1,...,(p-1)p+1),\; r_{\beta}=(0,1,2,3,4,...,p-1)cα​=(1,2,3,4,...,p),rα​=(0,p,2p,3p,...,(p−1)p);cβ​=(1,p+1,2p+1,...,(p−1)p+1),rβ​=(0,1,2,3,4,...,p−1)

但是,容易发现,∀i,j\forall i,j∀i,j,有

aα,i,j=rα,i+cα,j=[(i−1)p]+[j]=(i−1)p+j=aβ,j,i=rβ,j+cβ,i=[j−1]+[(i−1)p+1]=(i−1)p+ja_{\alpha,i,j}=r_{\alpha,i}+c_{\alpha,j}=[(i-1)p]+[j]=(i-1)p+j\\
=a_{\beta,j,i}=r_{\beta,j}+c_{\beta,i}=[j-1]+[(i-1)p+1]=(i-1)p+jaα,i,j​=rα,i​+cα,j​=[(i−1)p]+[j]=(i−1)p+j=aβ,j,i​=rβ,j​+cβ,i​=[j−1]+[(i−1)p+1]=(i−1)p+j

即α,β\alpha,\betaα,β这两种方案所得矩阵互为转置矩阵。所以应计算成一种基本解。

最终结论

因此,本质不同的解只有一种;考虑矩阵转置、行列交换等,一共有2∗(p!)22*(p!)^22∗(p!)2种解。

Wannafly挑战赛13 zzf的好矩阵 题解 答案解释的更多相关文章

  1. 【瓜分5000元奖金】Wannafly挑战赛13

    链接:https://www.nowcoder.com/acm/contest/80/A来源:牛客网 zzy的小号 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他 ...

  2. Wannafly挑战赛13 C:zzf的好矩阵(思维)

    题目描述 一个8 * 8的棋盘,第一个格子放1个麦穗,第二个格子放2个麦穗,第三个格子放4个麦穗……那么最后,共要放几个麦穗呢? zzf表示这个问题实在太简单,于是重新规定了游戏的规则. 初始的棋盘为 ...

  3. Wannafly挑战赛13 B:Jxc军训(逆元)

    题目描述 在文某路学车中学高一新生军训中,Jxc正站在太阳下站着军姿,对于这样的酷热的阳光,Jxc 表示非常不爽. Jxc将天空看做一个n*n的矩阵,此时天上有m朵云,这些云会随机分布在m个不同的位置 ...

  4. Wannafly挑战赛13 D.applese的生日(贪心+思维)

    题目描述 最可爱的applese生日啦,他准备了许多个质量不同的蛋糕,想请一些同学来参加他的派对为他庆生,为了不让一部分同学感到不爽,他决定把每个蛋糕都分割成几份(也可以不分割),使得最小的蛋糕的质量 ...

  5. Wannafly挑战赛23F-计数【原根,矩阵树定理,拉格朗日插值】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/161/F 题目大意 给出\(n\)个点的一张图,求它的所有生成树中权值和为\(k\)的倍数的个数.输出答案对\ ...

  6. Wannafly 挑战赛 19 参考题解

    这一次的 Wannafly 挑战赛题目是我出的,除了第一题,剩余的题目好像对大部分算法竞赛者来说好像都不是特别友好,但是个人感觉题目质量还是过得去的,下面是题目链接以及题解. [题目链接] Wanna ...

  7. Wannafly挑战赛27

    Wannafly挑战赛27 我打的第一场$Wannafly$是第25场,$T2$竟然出了一个几何题?而且还把我好不容易升上绿的$Rating$又降回了蓝名...之后再不敢打$Wannafly$了. 由 ...

  8. Wannafly挑战赛21A

    题目链接 Wannafly挑战赛21A 题解 代码 #include <cstdio> #include <cmath> #define MAX 1000005 #define ...

  9. 【Wannafly挑战赛4】F 线路规划 倍增+Kruskal+归并

    [Wannafly挑战赛4]F 线路规划 题目描述 Q国的监察院是一个神秘的组织.这个组织掌握了整个帝国的地下力量,监察着Q国的每一个人.监察院一共有N个成员,每一个成员都有且仅有1个直接上司,而他只 ...

随机推荐

  1. 《Python学习手册 第五版》 -第1章 问答环节

    第一章的主要内容是解疑答惑的,这个部分也是很适合初学者的,回答了大部分初学者所关注的问题 1.为什么使用Python,或者说Python的优点, 作者是分为两个部分来谈的,人们使用中的经验总结以及Py ...

  2. qt creator源码全方面分析(2-10-2)

    目录 Creating Your First Plugin 创建一个插件项目 构建并运行插件 文件结构 qmake项目 插件元数据模板 插件类 头文件 源文件 Creating Your First ...

  3. NR / 5G - F-OFDM

  4. 访问控制列表 ACL

    访问控制列表(Access Control List,ACL) 是路由器和交换机接口的指令列表,用来控制端口进出的数据包.其目的是为了对某种访问进行控制. 作用 ACL可以限制网络流量.提高网络性能. ...

  5. phpstorm设置debug调试

    先去下载xdebug.dll文件.将下面自己的phpinfo的文字信息复制到https://xdebug.org/wizard.php中,下载它提供的xdebug.dll的版本 下载完成后将php_x ...

  6. 手动使用I2C协议写入24C02C

    刚尝试用AT89C52单片机使用IIC总线协议读写AT24C02C,我忽然想能否用手动调整开关的方式写入AT24C02C?于是,便尝试了一下,结果果然成功了. 关于IIC总线,这篇文章写的很详细:ht ...

  7. python学习------文件的读与写

    f=open("yesterday","r",encoding="utf-8") #文件句柄 data=f.read() data2=f.r ...

  8. TampeMonkey 关于 youtube的两个插件

    一个是 Video Speed Buttons 负责调速 一个是 YouTube Links  负责下载不同分辨率的视频

  9. PMP--3. 项目启动过程组

    ####################################################### 从第三章开始,我正式进入项目过程,启动.规划.执行.监控.收尾五大过程组的具体在之后依次 ...

  10. Azure Media Services -可提供视频点播(VOD)

    ​Azure Media Services 提供直播/VOD点播相关的功能. •提供编码和打包以适用于各种设备播放视频(IOS/Android/web等). •向大量在线观众流式传输实时直播,例如活动 ...