【问题描述】

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

  牛棚中一共有N(1 <= N <= 35)盏灯,编号为1到N。这些灯被置于一个非常复杂的网络之中。有M(1 <= M <= 595)条很神奇的无向边,每条边连接两盏灯。 每盏灯上面都带有一个开关。当按下某一盏灯的开关的时候,这盏灯本身,还有所有有边连向这盏灯的灯的状态都会被改变。状态改变指的是:当一盏灯是开着的时候,这盏灯被关掉;当一盏灯是关着的时候,这盏灯被打开。

  问最少要按下多少个开关,才能把所有的灯都给重新打开。数据保证至少有一种按开关的方案,使得所有的灯都被重新打开。

【输入格式】

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

【输出格式】

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

【输入样例】

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

【输出样例】

3

【样例解释】

一共有五盏灯。灯1、灯4和灯5都连接着灯2和灯3。按下在灯1、灯4和灯5上面的开关。

【数据范围】

1 <= N <= 35  1 <= M <= 595

【来源】

bzoj1770 USACO NOV09 GOLD

这道题其实有2种解法,我在这里就讲一下我考试的时候用的暴力(暴力出奇迹),高斯消元的解法参考下面链接的内容(差不多,就最小值和种类数的差别而已):高斯消元的解法

说的暴力,无非就是枚举每个点按不按(其实直接枚举+优化有60分),想要满分2^35的时间复杂的肯定是不现实的,全部记忆化的话内存都不过。
所以我可以用map记忆一半,前2/n个点我们先枚举,然后记录每种情况的最小次数。然后再枚举后n-2/n个点,出来一种情况就在map里找和它配合的(记住如果直接满了要特判一下),如果有就可以。
时间复杂度(2*2^(2/n)),完全可以过。

详细代码如下:

#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<map>
using namespace std;
typedef long long ll;
const int maxn=40;ll a[maxn],b[maxn];
int n,m,ans=55;
ll maxd=0;
map<ll,int>mp;void run(int i,int t,ll s)
{if(i>n/2) {if(!mp[s]||mp[s]>t)mp[s]=t;if(s==maxd) ans=min(ans,t);return;}run(i+1,t,s);run(i+1,t+1,s^b[i]);
}
void run2(int i,int t,ll s)
{if(i>n) {if(mp[maxd-s]) ans=min(ans,t+mp[maxd-s]);if(s==maxd) ans=min(ans,t);return;}run2(i+1,t,s);run2(i+1,t+1,s^b[i]);
}
int main()
{//freopen("lamp.in","r",stdin);//freopen("lamp.out","w",stdout);a[1]=1;for(int i=2;i<=39;i++) a[i]=a[i-1]<<1;scanf("%d%d",&n,&m);int x,y;for(int i=1;i<=n;i++) b[i]=a[i];for(int i=1;i<=m;i++){scanf("%d%d",&x,&y);b[x]+=a[y];b[y]+=a[x];}maxd=a[n+1]-1;run(1,0,0);run2(n/2+1,0,0);cout<<ans;return 0;
}

bzoj1770 USACO NOV09 GOLD 灯(暴力出奇迹)相关推荐

  1. 求最大连续子序列和——解法1 – 暴力出奇迹||解法2 – 分治

    解法1 – 暴力出奇迹 穷举出所有可能的连续子序列,并计算出它们的和,最后取它们中的最大值 空间复杂度:O(1),时间复杂度:O (n 3) class Solution {public int ma ...

  2. 刷新纪录 | 74.7 秒训练完 ImageNet!2048 GPU 暴力出奇迹

    点击"小詹学Python",选择"置顶"公众号 重磅干货,第一时间送达 本文转载自新智元,禁二次转载 来源 | arXiv 编辑 | 三石.肖琴 ImageNe ...

  3. 牛客小白月赛9: F. 暴力出奇迹(思维题)

    链接:https://ac.nowcoder.com/acm/contest/275/F 来源:牛客网 题目描述 给定一个序列,寻找一对l,r,满足1 ≤ l ≤ r ≤ n 最大化的值 其中表示将a ...

  4. for循环数据量太大_中文文本分类roberta大力出奇迹之数据量大的问题

    问题描述: 笔者在文本分类场景中使用了roberta+pool+dense的三分类模型.采用预训练模型做项目的时候经常苦于数据太少,模型泛化性差,因此收集了1300W数据.在我尝试暴力出奇迹的时候,遇 ...

  5. Topcoder SRM 638 DIV 2 (大力出奇迹)

    水题,就是一个暴力.大力出奇迹. Problem Statement   There is a narrow passage. Inside the passage there are some wo ...

  6. 百鸡问题用计算机思维,大力出奇迹:当古代数学难题遇到计算机

    近年来,人工智能的春风不知吹动了多少资本的浪潮,从决胜棋坛的阿尔法狗,到遍地开花的无人车,AI成为经济寒冬里熊熊燃烧的火种,不知多少投资客捧着钞票前赴后继.科幻电影中,像人类一样思考.决策.学习的强人 ...

  7. 百鸡问题用计算机思维,大力出奇迹:当古代数学难题遇到现代计算机

    近年来,人工智能的春风不知吹动了多少资本的浪潮,从决胜棋坛的阿尔法狗,到遍地开花的无人车,AI成为经济寒冬里熊熊燃烧的火种,不知多少投资客捧着钞票前赴后继.科幻电影中,像人类一样思考.决策.学习的强人 ...

  8. 数组面试题-大力出奇迹?

    文章目录 数组中重复的数字 二维数组中的查找 旋转数组的最小数字 调整数字顺序使奇数位于偶数前面 数组中出现次数超过一半的数字 最小的k个数 连续子数组的最大和 数字序列中某一位的数字 把数组排成最小 ...

  9. 堆+贪心——nkoj1587【Usaco Nov07 Gold】分配防晒霜

    [Usaco Nov07 Gold]分配防晒霜 Description 奶牛们计划着去海滩上享受日光浴.为了避免皮肤被阳光灼伤,所有C(1 <= C <= 2500)头奶牛必须在出门之前在 ...

最新文章

  1. 网络营销——网络营销专员浅析网站推广营销关键词是重点
  2. 怎么检查python是否安装成功-检查python以及django是否安装配置成功
  3. 聚集索引与非聚集索引的总结
  4. OPPO R9凭创新赢得2000万销量,成2016年热销手机
  5. idea怎么找到路径下面的js_怎么找到Win7桌面存储路径?怎么把Win7桌面转到D盘?...
  6. gdiplustypes min max找不到标识符_当年月销过万的比亚迪宋MAX,为何突然不香了?...
  7. Download failed : Oracle JDK 7 is NOT installed,解决oracle jdk7的问题
  8. 【转】python os.popen 超时问题
  9. 【备忘】Windows的命令行下设置网络代理
  10. zookeeper入门及进阶
  11. C/C++[入门最后两题]
  12. Dubbo+Zookeeper视频教程
  13. 透视特洛伊木马程序开发技术
  14. 最新大数据案例分享:2019微信数据报告(图集)
  15. 【chp2】车万翔-自然语言处理:基于预训练模型的方法
  16. 数学分析教程(科大)——3.6笔记+习题
  17. 双人对战的球类游戏ios源码项目
  18. 高德地图api接口免费查询天气实战案例,axios请求查询天气,js版,【接上一篇微信测试号推送纪念日】
  19. C#设置按钮鼠标进入时半透明样式
  20. 澳洲学计算机难毕业吗,澳洲新南威尔士大学计算机专业好吗

热门文章

  1. GTA5无法访问R星服务器问题
  2. 20162329张旭升 2016-2017-2 《程序设计与数据结构》第七周学习总结
  3. 计算机专业16字口号大全,激励口号霸气点的16字
  4. Linux -> 安装Redis
  5. 真Untiy3_对官方表面Shader怕是有什么误解
  6. 计算机一级考试试题app,2016年全国计算机一级考试试题附答案
  7. 软件架构师应该知道的97件事之概括16 -30
  8. 常见快捷键eclipse
  9. 京东,你玩的是众筹还是预售?
  10. win10中Edge浏览器打不开网页 崩溃 兼容性问题 STATUS_INVALID_IMAGE_HASH