题目链接:http://poj.org/problem?id=3185

题意:20盏灯排成一排。操作第i盏灯的时候,i-1和i+1盏灯的状态均会改变。给定初始状态,问最少操作多少盏灯使得所有灯的状态最后均为0.

思路:高斯消元,记录变元个数,枚举变元。

int a[N][N],ans[N];
vector<int> b;

int Gauss()
{
    b.clear();
    int i,j=1,k,t;
    for(i=1;i<=20;i++)
    {
        for(k=j;k<=20;k++) if(a[k][i]) break;
        if(k>20)
        {
            b.pb(i);
            continue;
        }
        for(t=1;t<=21;t++) swap(a[k][t],a[j][t]);
        for(t=1;t<=20;t++) if(t!=j&&a[t][i])
        {
            for(k=1;k<=21;k++) a[t][k]^=a[j][k];
        }
        j++;
    }
    for(i=j;i<=20;i++) if(a[i][21]) return -1;
    if(j<=20) return 21-j;
    for(i=1;i<=20;i++) ans[i]=a[i][21];
    return 0;
}

int main()
{
    int num=0;
    int i;
    FOR1(i,20)
    {
        RD(a[i][21]);
        a[i][i]=1;
        if(i>1) a[i-1][i]=1;
        if(i<20) a[i+1][i]=1;
    }
    int t=Gauss();
    if(t==0)
    {
        int sum=0;
        FOR1(i,20) sum+=ans[i];
        PR(sum);
        return 0;
    }
    int sum=INF,st,j,k;
    FOR0(st,(1<<t))
    {
        FOR0(i,t) ans[b[i]]=(st>>i)&1;
        for(i=20-t;i>=1;i--)
        {
            for(j=i;j<=20;j++) if(a[i][j]) break;
            ans[j]=a[i][21];
            for(k=j+1;k<=20;k++) if(a[i][k]) ans[j]^=ans[k];
        }
        int temp=0;
        FOR1(i,20) temp+=ans[i];
        upMin(sum,temp);
    }
    PR(sum);
}

  

POJ 3185 The Water Bowls(高斯消元-枚举变元个数)的更多相关文章

  1. POJ 3185 The Water Bowls (高斯消元)

    题目链接 题意:翻译过来就是20个0或1的开关,每次可以改变相邻三个的状态,问最小改变多少次使得所有开关都置为0,题目保证此题有解. 题解:因为一定有解,所以我们可以正序逆序遍历两次求出较小值即可.当 ...

  2. poj 3185 The Water Bowls 高斯消元枚举变元

    题目链接 给一行0 1 的数, 翻转一个就会使他以及它左右两边的都变, 求最少多少次可以变成全0. 模板题. #include <iostream> #include <vector ...

  3. POJ 3185 The Water Bowls 【一维开关问题 高斯消元】

    任意门:http://poj.org/problem?id=3185 The Water Bowls Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  4. poj 3185 The Water Bowls

    The Water Bowls 题意:给定20个01串(最终的状态),每个点变化时会影响左右点,问最终是20个0所需最少操作数? 水题..直接修改增广矩阵即可:看来最优解不是用高斯消元(若是有Gaus ...

  5. poj 3185 The Water Bowls(反转)

    Description The cows have a line of water bowls water bowls to be right-side-up and thus use their w ...

  6. POJ 3185 The Water Bowls (高斯消元 求最小步数)

    题目链接 题意:有20个数字,0或1.如果改变一个数的状态,它左右两边的两个数的状态也会变反.问从目标状态到全0,至少需要多少次操作. 分析: 和上一题差不多,但是比上一题还简单,不多说了,但是在做题 ...

  7. POJ 1681---Painter's Problem(高斯消元)

    POJ   1681---Painter's Problem(高斯消元) Description There is a square wall which is made of n*n small s ...

  8. POJ 1830 开关问题(高斯消元)题解

    思路:乍一看好像和线性代数没什么关系.我们用一个数组B表示第i个位置的灯变了没有,然后假设我用u[i] = 1表示动开关i,mp[i][j] = 1表示动了i之后j也会跟着动,那么第i个开关的最终状态 ...

  9. POJ 1222【异或高斯消元|二进制状态枚举】

    题目链接:[http://poj.org/problem?id=1222] 题意:Light Out,给出一个5 * 6的0,1矩阵,0表示灯熄灭,反之为灯亮.输出一种方案,使得所有的等都被熄灭. 题 ...

随机推荐

  1. andriod Kernel configuration is invalid

    error:  ERROR: Kernel configuration is invalid.         include/generated/autoconf.h or include/conf ...

  2. 小甲鱼汇编语言006第二章 寄存器(CPU工作原理)01

    http://baidu.ku6.com/watch/09215216064281951074.html?page=videoMultiNeed

  3. iOS常见问题(1)

    一.storyboard连线问题 产生原因:将与storyboard关联的属性删除了,但是storyboard中还保持之前所关联的属性. 解决: 1.点击view controller 2.点击这排最 ...

  4. github客户端创建仓库

    1.在github上创建立自己项目仓库 登录后,在github首页,点击页面右下角“New Repository” 填写项目信息: project name: project description  ...

  5. WPF 多线程处理(1)

    WPF 多线程处理(1) WPF 多线程处理(2) WPF 多线程处理(3) WPF 多线程处理(4) WPF 多线程处理(5) WPF 多线程处理(6) 废话不多说,先上图: 多线程处理数据后在th ...

  6. mysql注入绕过的一些技巧

    虽然mysql + php的开发中可以使用pdo中,但是有些老久的程序没有使用,或其他原因 1.注释绕过 select/*comment*/user/*zzsdsdsf*/from mysql.use ...

  7. 'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件的解决办法

    前言: 本文的解决方法来自http://www.cnblogs.com/xionghui/archive/2012/04/11/2442404.html --感谢! 问题描述:新电脑装mysql后在c ...

  8. 20160723数据结构节alexandrali

    大坑最后再填. 20160803:心情好回来填啦(5/7) 做的题目是: poj2970 我们先每个人都不给钱qwq 然后我们发现有一位的工作时间超过了d 那么我们就从以前安排过工作的人里,a最大的, ...

  9. 【转载】C++ inline 函数

    (一)inline函数(摘自C++ Primer的第三版) 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联. inline int min(int first, int ...

  10. POJ 3277 City Horizon(叶子节点为[a,a+1)的线段树+离散化)

    网上还有用unique函数和lowerbound函数离散的方法,可以百度搜下题解就有. 这里给出介绍unique函数的链接:http://www.cnblogs.com/zhangshu/archiv ...