题意:有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

最新文章

  1. iOS原型模式
  2. C语言中链表任意位置怎么插入数据?然后写入文件中?
  3. NKUI框架使用
  4. 在Windows8下安装SQL Server 2005无法启动服务
  5. XPATH基础入门资料
  6. 如何用Apache POI操作Excel文件-----如何用Apache POI 画一个离散图
  7. C++TSL之map容器(悲伤的故事)
  8. 如何使用投影看着备注分享自己的PPT
  9. 坑爹的Android Ble 问题记录日志
  10. C++类的存储(部分可用与c的结构体)
  11. MySQL多字节字符集造成主从数据不一致问题
  12. Konckout第三个实例:循环绑定 -- table列表数据的填充
  13. mybatis 增加热加载xml
  14. CF1119A Ilya and a Colorful Walk
  15. promise.all方法合并请求接口的两个值
  16. JS中数据类型的判断
  17. 微信公众号用户OpenID同步导出系统
  18. fatal error: sys/cdefs.h: No such file or directory
  19. 在Core环境下用WebRequest连接上远程的web Api 实现数据的简单CRUD(附Git地址)
  20. Django 1.10中文文档-第一个应用Part6-静态文件

热门文章

  1. PHP学习笔记 - 进阶篇(9)
  2. An Easy Task
  3. linux下进入root
  4. ubuntu grub 引导修复
  5. prototype原型理解
  6. [CSS]浮动的那点事儿
  7. sqlite3简单使用
  8. python(四)数据持久化操作 文件存储
  9. linux关闭服务的方法
  10. Spark Streaming揭秘 Day18 空RDD判断及程序中止机制