题解 | #World Fragments I#

Ama no Jaku

https://ac.nowcoder.com/acm/contest/57357/D

D题题解

前导知识: 11. 2SAT2-SAT问题:https://www.cnblogs.com/captain1/p/9760503.html

这题我们利用 2-SAT推出满足条件

先假设变化完第一行有一个 11,这时候列最大值 max(cj)=2n1max(c_j)=2^{n-1},所以此时要满足题目的条件min(ri)max(cj)min(r_i)≥max(c_j)就需要让行最小值 min(ri)>=2n1min(r_i)>=2^{n-1}也就是此时每列的第一行都是 11 接着此时又得到 max(cj)=2n1max(c_j)=2^n-1, 所以需要让行最小值 min(ri)>=2n1min(r_i)>=2^{n}-1,所以此时矩阵为全一矩阵。 同理,假设第一行全为 00 那么,变化完的矩阵就必须是全 00 矩阵。

所以变化完的矩阵就只有01矩阵。那么我们只要知道变化成01矩阵需要多少步,经过实践可以知道,必须每一行的每个数字都相同,或者都不相同,才可能。 具体做法看代码。

首先先判断是否每一行都相等或者相反,不满足则为-1;

(ps:^ 是同为0,不同为一)

#include<iostream>
std::string a[2010];
int main() {
    int n, cnt = 0, x;
    std::cin >> n;
    for (int i = 1; i <= n; i++) {
        std::cin >> a[i];
    }
    for (int i = 2; i <= n; i++) {//这里是判断是否满足可变条件
        if (a[1] != a[i]) {
            cnt++; x = i;//统计不同行的个数,存储不同行在下面会用到
            for (int j = 0; j < n; j++) {
                if (a[1][j] == a[i][j]) {//一行中的每个是否相等,有相等的就不行
                    std::cout << "-1";
                    return 0;
                }
            }
        }
    }
    //接下来要变成1或者0的最小,只需要先判断第一行1和0哪个多
    int cnt1 = 0, cnt0 = 0,ans;
    if (2*cnt < n) {//如果是n/2有的过不了
        x = 1;
        ans = cnt;
    }
    else ans = n - cnt;//这里是不同行先变
    for (int i = 0; i < n; i++) {
        if (a[x][i] == '0') cnt0++;//统计这一行中0和1的数量
        else cnt1++;
    }
    
    ans += std::min(cnt0, cnt1);//再就是较少的列是我们需要变的
    std::cout << ans;
    return 0;
}
全部评论

相关推荐

03-21 08:46
已编辑
门头沟学院 C++
只写bug的程序媛:本科能找到好的,真不建议读研,提前占坑比较好,本科找不到好的,也不建议读研,因为两三年之后压力只会更大,唯一的解就是行业好起来
点赞 评论 收藏
分享
我看标题以为40W,我觉得最差也得40k,点进去一看40块。你永远想不到客户的预算有多低...&nbsp;要求&ldquo;前端使用vue+element开发一个pc端宠物网站和vue+vant开发一个移动端网站,类型是宠物网站的。客户预算40&rdquo;&nbsp;全网最受欢迎的嵌入式面经面经一共32篇文章,12w+字数,包含全部最新的面试必问考点,4.7w+同学学习,2800+订阅,非常适合在找工作面经薄弱的同学,3000+订阅还会涨价,提前订阅提前享受,持续更新中。原帖链接:https://www.nowcoder.com/creation/manager/columnDetail/MJNwoMc
野猪不是猪🐗:哎呀,看来这位客户预算确实挺让人意外的呢!不过,别灰心,有时候客户的预算有限,但项目完成后说不定能带来意想不到的收获呢!😊 至于你提到的嵌入式面经,听起来好像很棒的样子!如果你对求职有帮助,那确实值得订阅学习哦!悄悄告诉你,点击我的头像,我们可以私信聊聊更多求职经验和技巧哦~🎉 对了,你对Vue和Element/Vant的开发有什么疑问或者想要分享的经验吗?我们可以一起探讨一下~😉
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务