这场比赛大概是我做CF以来最难的一场div2了
D题搞了很久,还是没搞出来,C题题目没看仔细,E题做过类似的,但显然我这种div2选手很少在比赛搞E题,不过现在已经渐渐消除了对后面两题的恐惧、
给你一个0 1 方阵,题目说有n-1个1,然后一次操作可以交换两行或者两列,然后要求输出一种交换的方案使得所有的1都在主对角线以下。
可以暴力两个循环先将矩阵调节为从左往右每一列的1的数量非递增,然后接下来从最后一列开始往前处理,枚举这一列主对角线以上(包括对角线)的每一个1,将它们依次填入主对角线下面的每一个空位上(交换两行),第i列的1的数量保证不会超过n-i , 总数就是n-1,而且从左往右递减,然后想想就知道了。这样子继续交换下去,知道第一列,注意,已经交换过的行不能再换了,因为有可能将已经换到对角线下面的1换回到对角线上面,最坏情况有n-1列被标记掉,所以不用担心交换不下来。