题意:有n个灯笼,m个开关

每个开关可以控制k个灯笼, 然后分别列出控制的灯笼的编号(灯笼编号为1到n)

下面有Q个询问,每个询问会有一个最终状态(n个灯笼为一个状态)0代表关 1代表开

问到达这种状态,按开关的方法总数

解释一下案例:

3 2     (有3个灯笼, 2个开关)

2 1 2  (第一个开关控制2个灯笼,这两个灯笼的编号是1、2)

2 1 3  (第一个开关控制2个灯笼,这两个灯笼的编号是1、3)

2        (2个询问)

0 1 1  (这3个灯笼变为关、开、开 有几种按开关的方法)

1 1 1  (这3个灯笼变为开、开、开 有几种按开关的方法)

很明显的高斯消元,与POJ 1830 开关问题几乎完全一样

本题是n个灯 m个开关(即 n个方程m个未知数)

P.s. 要记得每个Q都要对状态初始化!

 ][];
 ];

 int n;
 int Gauss(int n, int m)
 {
     , k, num=;
     ;k<n && col<m;k++, col++)
     {
         int max_r=k;
         ;i<n;i++)
             if(abs(a[i][col])>abs(a[max_r][col]))
                 max_r=i;
         if(max_r!=k)
             ;j++)
                 swap(a[k][j], a[max_r][j]);
         if(!a[k][col])
         {
             k--;
             free_x[num++]=col;
             continue;
         }
         ;i<n;i++)
             if(a[i][col])
                 ;j++)
                     a[i][j]^=a[k][j];
     }
     for(int i=k;i<n;i++)
         if(a[i][col])
             ;
     return m-k;
 }

 ][];
 int main()
 {
     ;
     scanf("%d", &t);
     while(t--)
     {
         memset(a, , sizeof(a));
         memset(b, , sizeof(b));
         int n, m;
         scanf("%d%d", &n, &m);
         ;i<m;i++)
         {
             int k;
             scanf("%d", &k);
             while(k--)
             {
                 int X;
                 scanf("%d", &X);
                 a[X-][i]=;
                 b[X-][i]=;
             }
         }
         int Q;
         scanf("%d", &Q);
         printf("Case %d:\n", ca++);
         while(Q--)
         {
             ;i<n;i++)
                 ;j<m;j++)
                     a[i][j]=b[i][j];
             ;i<n;i++)
                 scanf("%d", &a[i][m]);
             int t=Gauss(n, m);
             )
             {
                 puts(");
                 continue;
             }
             LL ans=1LL<<t;
             cout<<ans<<endl;
         }
     }
     ;
 }

HDOJ 3364

[Gauss]HDOJ3364 Lanterns的更多相关文章

  1. OPEN CASCADE Gauss Least Square

    OPEN CASCADE Gauss Least Square eryar@163.com Abstract. The least square can be used to solve a set ...

  2. OpenCASCADE Gauss Integration

    OpenCASCADE Gauss Integration eryar@163.com Abstract. Numerical integration is the approximate compu ...

  3. HDU 3364 Lanterns 高斯消元

    Lanterns Problem Description   Alice has received a beautiful present from Bob. The present contains ...

  4. Lanterns

    Lanterns 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=86640#problem/B 题目: Description ...

  5. C# 列主元素(Gauss)消去法 计算一元多次方程组

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. C# 顺序高斯(Gauss)消去法计算一元多次方程组

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. HDU 3364 Lanterns (高斯消元)

    题意:有n个灯和m个开关,每个开关控制数个灯的状态改变,给出k条询问,问使灯的状态变为询问中的状态有多少种发法. 析:同余高斯消元法,模板题,将每个开关控制每个灯列成行列式,最终状态是结果列,同余高斯 ...

  8. 整数矩阵CMO 2102回馈(gauss整数解)

    PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! 本题是CMO(数学 Olympics) 2012 第二题 所以还是很坑的…… ...

  9. [Gauss]HDOJ3976 Electric resistance

    题意: 一看图就明白了 要求的是1与n端点间的等效电阻 重点在于转化成考虑电流 根据KCL定理:在任一瞬间流出(流入)该节点的所有电流的代数和恒为零 U = IR 可以令1点的电势为零 那么n点的电势 ...

随机推荐

  1. 【译】 Node.js v0.12的新特性 -- Cluster模式采用Round-Robin负载均衡

    原文:https://strongloop.com/strongblog/whats-new-in-node-js-v0-12-cluster-round-robin-load-balancing 本 ...

  2. 指针与strncpy---内存

    指针的形式的赋值和strncpy的赋值 e.SetAttr("Amt", ToString(dAmt)      ); e.SetAttr("Amt", sAm ...

  3. OCI-DML-更新数据库中不存在的字段

    用gtest来测试oracle中oci方式的SQL语句操作,在测试update数据库中不存在的异常案例的时候,日志没有报错,但是结束后跳出了数据库连接 gtest也没有给出正常的结果,本身update ...

  4. [java学习笔记]java语言基础概述之转义字符&break&continue

    1.转义字符 \t:制表符 \n:回车 \b:退格 \r:回车 \":双引号 \\:反斜线(常用于文件路径的书写中)   windows系统中回车符其实是由两个符号组成的,\r\n linu ...

  5. Java多线程(六) 线程系列总结

    多线程系列终于终结得差不多,本人对该系列所做的总结大致如下: 线程锁模块耗费了大量的时间,底层的AQS实现比较复杂.仍然没有时间总结源码部分,能够坚持写下这么几个篇幅的内容真心佩服自己....希望继续 ...

  6. L010-oldboy-mysql-dba-lesson10

    L010-oldboy-mysql-dba-lesson10 来自为知笔记(Wiz)

  7. MAC机中安装RUBY环境

    在安装CocoaPods之前要先配置好RUBY环境,本文就怎么安装RUBY的环境进行一总结.安装Ruby环境首先需要安装Xcode然后需要安装Homebrew,接下来需要安装RVM最后安装Ruby环境 ...

  8. hibernate的n+1问题

    下面选自<精通Hibernate:Java对象持久化技术详解>作者:孙卫琴 在Session的缓存中存放的是相互关联的对象图.默认情况下,当Hibernate从数据库中加载Customer ...

  9. Matlab生成动态链接库供C#调用

    1.首先在Matlab中编写一个或几个.m文件 2.然后在命令空间中输入命令:deploytool 3.修改工程名称,修改需要生成文件后缀 4.添加类,添加文件,然后点击生成.

  10. lua5.3调用C/C++

    马上面临毕业设计,打算做点跟网游有关的,先从做周边工具开始,目前正在做一个协议序列化和反序列化的东西,广告一波先: https://github.com/Anti-Magic/rproto 目前非常简 ...