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. requests的post提交form-data; boundary=????

    提交这种用boundary分隔的表单数据时,有两种方法,一种是以传入files参数,另一种是传入data参数,data参数需要自己用boundary来分隔为指定的形式,而files参数则以元组的形式传 ...

  2. MVVM框架(二)---生命周期

    一.Vue 生命周期图解: 这张图是官方给出的,大家可能都看过.其中我们重点讲述以下几个钩子函数: beforeCreate  -->   created beforeMount   --> ...

  3. String、StringBuffer和StringBuilder总结

    String String类是不可变(final)的,对String类的任何改变,都是返回一个新的String类对象. StringBuffer 当对字符串进行修改的时候,需要使用 StringBuf ...

  4. SQLYOG导入数据时报错,出现找不到Microsoft office 元驱动程式,并且无法安装64位office Access驱动

    当我们使用mysql导入外部数据时(如Excel表),有时会出现如下的错误问题,即找不到64位access驱动.为了解决这个问题,我们需要下载相应的驱动,通过下图中的点击此链接即可进入下载页面(htt ...

  5. 怎么理解Laravel的核心架构

    使用过larave框架的朋友都知道laravel框架里面除了提供一些基本的功能(如控制器.视图.模型)之外,还有中间件.门面.契约等,这些东西是如何在laravel框架运用起来的呢?今天就和大家详聊一 ...

  6. python如何删除二维或者三维数组/列表中某维的空元素

    如题,个人在使用python进行数据预处理过程中出现的问题,抽象成删除三维列表中某维为空的问题. 一.首先来看一下三维数组/列表的结构 仔细看下图就会很清楚了: 轴0即是去除第一个外括号后第一层(我把 ...

  7. Redis中RDB和AOF持久化区别和联系

    RDB和AOF持久化   ​RDB持久化 RDB是什么? 原理是redis会单独创建(fork) 一个与当前进程一模一 样的子进程来进行持久化,这个子进程的所有数据(变量.环境变量,程序程序计数器等) ...

  8. Params:params 关键字可以指定在参数数目可变处采用参数的方法参数。

    Params:params 关键字可以指定在参数数目可变处采用参数的方法参数. 注意点: 1.一个方法中只能使用一个params来声明不定长参数数组: 2.params参数数组只能放在已定义参数后面 ...

  9. Linux运维---磁盘存储-2. RAID

    随着单块磁盘在数据安全.性能.容量上呈现出的局限,磁盘阵列(Redundant Arrays of Inexpensive/Independent Disks,RAID)出现了,RAID把多块独立的磁 ...

  10. SharePoint 生产环境文件归档

    前言 最近,用户提出数据库大小太大,所以,希望把文件归档.至于归档,该怎么做呢? 正文 我们提出的解决方案,占用数据库最主要的就是各种文档,那就按照时间为限制,超过一年的文档全部备份,由用户的IT自行 ...