• CF431D


    CF431D

    给定一张棋盘,(n imes n) 的大小,每个位置有一个权值。

    每次你可以选择一个大小为 (m imes m) 的矩形翻转其中权值,其中 (m=frac{n+1}{2})

    最大化权值和。

    (nle 33),保证 (n) 为奇数。

    ( m Sol:)

    好仙的题呀qwq

    (m=frac{n+1}{2}),根据观察,设 (w_{x,y}) 表示点 ((x,y)) 的取反情况,我们会发现 (w_{x,y}oplus w_{x,m}oplus w_{x,m+y}=0),这是因为我们每次取反矩阵要么取反其中 (0) 个要么取反其中一个,列同理。

    进一步观察,可以使用的 (m^2) 个矩阵是线性无关的,单看前 (m imes m) 个位置,我们发现翻转状态任意的矩形都是合法的(可以将每个线性无关的 (mcdot m) 的矩形规定在左上角,然后从上往下依次进行翻转)

    根据初始结论,这些位置将确定剩余的位置的局面。

    换而言之,对于 (x,y<m) 单看 ((x,y),(x+m,y),(x,y+m),(x+m,y+m))(4) 个位置,当中间一列与中间一行确定之后这 (4) 个位置绑定,而彼此独立,所以可以直接枚举最优决策了。

    于是我们得到一个 (mathcal O(4^m imes n^2)) 的做法了。

    考虑进一步优化,我们发现如果将行的状态确定下来,那么每一列以及其影响的相绑定的一列的决策均固定,所以我们可以直接枚举行的状态并 check 答案(注意只需要枚举前一半),复杂度为 (mathcal O(n^2 2^{frac{n}{2}}))

  • 相关阅读:
    布局页js文件问题
    sqlite如何更改表结构
    css各种样式
    layUI订单实现思路
    layUI使用总结
    easyui点击行内编辑,怎么获取行数据并赋值
    404
    PTA C语言作业
    python一行代码格式化日期
    校园网跨网段共享文件Samba+SSH
  • 原文地址:https://www.cnblogs.com/Soulist/p/13656506.html
Copyright © 2020-2023  润新知