CF1592F1 Alice and Recoloring 1 题解

操作 2,3 可以用 1,4 容斥,所以没用。

bi,j=ai,jai+1,jai,j+1ai+1,j+1

则操作 1 翻转 (1,1)(i,j) 的矩阵等价于 bi,jbi,j1

操作 4 翻转 (i,j)(n,m) 的矩阵等价于 bn,mbn,m1,bi1,mbi1,m1,bn,j1bn.j11,bi1,j1bi1,j11

注意到操作 4 最多做 1 次,因为之后的操作 4 只能影响三个位置,不如操作 1

所以如果可以找到 bn,m=bi1,m=bn,j1=bi1,j1=1,对 (i,j)(n,m) 的矩阵做一次操作 4,然后用操作 1 翻转剩下的位置即可。

#include <cstdio>
int n, m, q;
bool a[550][550], b[550][550];
char c;
int main()
{
    scanf("%d%d", &n, &m);
    for(int i = 1;i <= n;++i)
        for(int j = 1;j <= m;++j)
            scanf(" %c", &c), a[i][j] = c == 'B';
    for(int i = 1;i <= n;++i)
        for(int j = 1;j <= m;++j)
            b[i][j] = a[i][j] ^ a[i + 1][j] ^ a[i][j + 1] ^ a[i + 1][j + 1];
    for(int i = 1;i <= n;++i)
        for(int j = 1;j <= m;++j)
            q += b[i][j];
    if(b[n][m])
        for(int i = 1;i < n;++i)
            for(int j = 1;j < m;++j)
                if(b[i][j] && b[i][m] && b[n][j])
                    return !printf("%d", q - 1);
    return !printf("%d", q);
}
posted @   Jijidawang  阅读(4)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示