★★☆   输入文件:lights.in   输出文件:lights.out   简单对比
                    时间限制:1 s   内存限制:128 MB

【问题描述】

贝希和她的闺密们在她们的牛棚中玩游戏。但是天不从人愿,突然,牛棚的电源跳闸了,所有的灯都被关闭了。贝希是一个很胆小的女生,在伸手不见拇指的无尽的黑暗中,她感到惊恐,痛苦与绝望。她希望您能够帮帮她,把所有的灯都给重新开起来!她才能继续快乐地跟她的闺密们继续玩游戏!

牛棚中一共有N(1 <= N <= 35)盏灯,编号为1到N。这些灯被置于一个非常复杂的网络之中。有M(1 <= M <= 595)条很神奇的无向边,每条边连接两盏灯。

每盏灯上面都带有一个开关。当按下某一盏灯的开关的时候,这盏灯本身,还有所有有边连向这盏灯的灯的状态都会被改变。状态改变指的是:当一盏灯是开着的时候,这盏灯被关掉;当一盏灯是关着的时候,这盏灯被打开。

问最少要按下多少个开关,才能把所有的灯都给重新打开。

数据保证至少有一种按开关的方案,使得所有的灯都被重新打开。

题目名称:lights

输入格式:

*第一行:两个空格隔开的整数:N和M。

*第二到第M+1行:每一行有两个由空格隔开的整数,表示两盏灯被一条无向边连接在一起。
没有一条边会出现两次。

样例输入(文件 lights.in):

5 6
1 2
1 3
4 2
3 4
2 5
5 3

输入细节:

一共有五盏灯。灯1、灯4和灯5都连接着灯2和灯3。

输出格式:

第一行:一个单独的整数,表示要把所有的灯都打开时,最少需要按下的开关的数目。

样例输出(文件 lights.out):

3

输出细节:

按下在灯1、灯4和灯5上面的开关。

题解:

  和poj 1681几乎一样,dfs的不懂的看这。。。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstdlib>
 4 #include<cmath>
 5 #include<algorithm>
 6 #include<cmath>
 7 #include<queue>
 8 #include<vector>
 9 using namespace std;
10 int N,M,ANS;
11 int a[50][50];
12 void gauss(){
13     for(int i=1;i<=N;i++){
14         int tmp=i;
15         while(tmp<=N&&a[tmp][i]==0) tmp++;
16         if(tmp>N) continue;
17         if(tmp!=i){
18             for(int j=1;j<=N+1;j++) swap(a[i][j],a[tmp][j]);
19         }
20         for(int j=1;j<=N;j++){
21             if(j!=i&&a[j][i]==1){
22                 for(int k=1;k<=N+1;k++) a[j][k]^=a[i][k];
23             }
24         }
25     }
26 }
27 int s[50],cnt;
28 void dfs(int x){
29     if(cnt>=ANS) return;
30     if(x==0){
31         ANS=min(ANS,cnt);
32         return;
33     }
34     if(a[x][x]){
35         int num=a[x][N+1];
36         for(int i=x+1;i<=N;i++)
37             if(a[x][i])
38                 num=num^s[i];
39         s[x]=num;
40         if(num==1) cnt++;
41         dfs(x-1);
42         if(num==1) cnt--;
43     }
44     if(!a[x][x]){
45         s[x]=0;
46         dfs(x-1); s[x]=1; cnt++;
47         dfs(x-1); cnt--;
48     }
49 }
50 int main(){
51     //freopen("lights.in","r",stdin);
52     //freopen("lights.out","w",stdout);
53     scanf("%d%d",&N,&M);
54     for(int i=1;i<=N;i++) a[i][i]=1;
55     for(int i=1,u,v;i<=M;i++){
56         scanf("%d%d",&u,&v);
57         a[u][v]=a[v][u]=1;
58     }
59     for(int i=1;i<=N;i++) a[i][N+1]=1;
60     gauss();
61     ANS=1<<28;
62     dfs(N);
63     printf("%d",ANS);
64     return 0;
65 }

转载于:https://www.cnblogs.com/CXCXCXC/p/5226392.html

cogs 539. 牛棚的灯相关推荐

  1. 如何用matlab解异或方程,高斯消元法求解异或方程组: cojs.tk 539.//BZOJ 1770 牛棚的灯...

    高斯消元求解异或方程组: 比较不错的一篇文章:http://blog.sina.com.cn/s/blog_51cea4040100g7hl.html cojs.tk  539. 牛棚的灯 ★★☆   ...

  2. 苹果长截图无缝_苹果正在努力实现无缝体验

    苹果长截图无缝 Back in 2014, Apple teased a new programming language, two updated operating systems, and do ...

  3. JZOJ 1321. 灯

    Description 贝希和她的闺密们在她们的牛棚中玩游戏.但是天不从人愿,突然,牛棚的电源跳闸了,所有的灯都被关闭了.贝希是一个很胆小的女生,在伸手不见拇指的无尽的黑暗中,她感到惊恐,痛苦与绝望. ...

  4. P2962 [USACO09NOV]灯Lights

    贝希和她的闺密们在她们的牛棚中玩游戏.但是天不从人愿,突然,牛棚的电源跳闸了,所有的灯都被关闭了.贝希是一个很胆小的女生,在伸手不见拇指的无尽的黑暗中,她感到惊恐,痛苦与绝望.她希望您能够帮帮她,把所 ...

  5. 洛谷 P2962 [USACO09NOV]灯Lights

    P2962 [USACO09NOV]灯Lights 题目描述 Bessie and the cows were playing games in the barn, but the power was ...

  6. JZOJ1321 灯

    Description 贝希和她的闺密们在她们的牛棚中玩游戏.但是天不从人愿,突然,牛棚的电源跳闸了,所有的灯都被关闭了.贝希是一个很胆小的女生,在伸手不见拇指的无尽的黑暗中,她感到惊恐,痛苦与绝望. ...

  7. 【ZJOJ1321】灯

    题目 贝希和她的闺密们在她们的牛棚中玩游戏.但是天不从人愿,突然,牛棚的电源跳闸了,所有的灯都被关闭了.贝希是一个很胆小的女生,在伸手不见拇指的无尽的黑暗中,她感到惊恐,痛苦与绝望.她希望您能够帮帮她 ...

  8. 【题解】JZOJ1321:灯

    我参考了这篇题解 Description 贝希和她的闺密们在她们的牛棚中玩游戏.但是天不从人愿,突然,牛棚的电源跳闸了,所有的灯都被关闭了.贝希是一个很胆小的女生,在伸手不见拇指的无尽的黑暗中,她感到 ...

  9. 第 40 章 呼吸灯与 SPWM 波

    40.1 呼吸灯简介 呼吸灯,就是指灯光设备的亮度随着时间由暗到亮逐渐增强,再由亮到暗逐渐衰减,很有节奏感地一起一伏,就像是在呼吸一样. 40.2 呼吸灯与 PWM 控制原理 呼吸的特性是一种类似图指 ...

最新文章

  1. Vue.js 自定义指令
  2. P1080 国王游戏(贪心+高精度乘除及大数比较)
  3. http和socket之长连接和短连接区别
  4. java 正则 标签内容_java正则匹配html片段,并取得标签中的内容
  5. 包裹遭联邦快递不正常“转运” 华为:将重新审视双方合作关系
  6. XmlAttribute与实体的转换和匹配方案(附源码)
  7. 又一起“删库”跑路:链家程序员怒删公司 9TB 数据,被判 7 年!网友:真惨~...
  8. java 社招 简历_招聘java简历模板
  9. 论文期刊科普-SCI SSCI CSSCI CSCD和北大核心期刊分别是什么?
  10. 单片机:楼梯照明灯控制
  11. 用python编写猜数字游戏
  12. 1-7-2 查询水果价格分数
  13. cocos2d-x面试题(一)
  14. 大地水准面 地球椭球体 大地基准面 地图投影理解
  15. Excel应用技巧:不让别人修改你的Excel表
  16. web学习一——We简介、Tomcat、HTTP协议
  17. python 64式: 第24式、python项目国际化翻译实战
  18. 王爽 汇编语言 实验全部答案
  19. if条件语句基本语法
  20. 超简单!Android 播放流媒体

热门文章

  1. maxcompute 2.0复杂数据类型之struct
  2. 用python编写一个高效搜索代码工具
  3. Android Crash战斗日记(一、原理篇)
  4. lor: 一个基于OpenResty的lua framework
  5. Editplus快捷键大全
  6. gzcms技术开发文档
  7. NuGet学习笔记(2) 使用图形化界面打包自己的类库
  8. 锐捷RG-S2126G交换机密码恢复实战
  9. 易语言---时间操作
  10. C#学习笔记-XML的读写(一)