P2962 [USACO09NOV]灯Lights
贝希和她的闺密们在她们的牛棚中玩游戏。但是天不从人愿,突然,牛棚的电源跳闸了,所有的灯都被关闭了。贝希是一个很胆小的女生,在伸手不见拇指的无尽的黑暗中,她感到惊恐,痛苦与绝望。她希望您能够帮帮她,把所有的灯都给重新开起来!她才能继续快乐地跟她的闺密们继续玩游戏! 牛棚中一共有N(1 <= N <= 35)盏灯,编号为1到N。这些灯被置于一个非常複杂的网络之中。有M(1 <= M <= 595)条很神奇的无向边,每条边连接两盏灯。 每盏灯上面都带有一个开关。当按下某一盏灯的开关的时候,这盏灯本身,还有所有有边连向这盏灯的灯的状态都会被改变。状态改变指的是:当一盏灯是开著的时候,这盏灯被关掉;当一盏灯是关著的时候,这盏灯被打开。 问最少要按下多少个开关,才能把所有的灯都给重新打开。 数据保证至少有一种按开关的方案,使得所有的灯都被重新打开。
高斯消元
#include<bits/stdc++.h> typedef long long ll; const int inf=0x3f3f3f3f; #define For(i,a,b) for(int i=a;i<=b;i++) #define FFor(i,a,b) for(int i=a;i>=b;i--) template <class T> inline T min(T a,T b,T c) {return min(min(a,b),c); } template <class T> inline T max(T a,T b,T c) {return max(max(a,b),c); } template <class T> inline T min(T a,T b,T c,T d) {return min(min(a,b),min(c,d)); } template <class T> inline T max(T a,T b,T c,T d) {return max(max(a,b),max(c,d)); } using namespace std; const int N=1e3; const double eps=1e-9; //***********name************** int matrix[N][N]; int ans=inf; int n,m; int res[N]; //***********function********** void gauss() {For(i,1,n){int t=i;For(j,i+1,n)if(matrix[j][i]){t=j;break;}if(t!=i)For(j,1,n+1)swap(matrix[t][j],matrix[i][j]);For(j,i+1,n){if(matrix[j][i])For(k,1,n+1)matrix[j][k]^=matrix[i][k];}} } void dfs(int cur,int tot) {if(ans<=tot)return;if(cur<1){ans=min(ans,tot);return;}if(matrix[cur][cur]){res[cur]=matrix[cur][n+1];For(i,cur+1,n)res[cur]^=matrix[cur][i]&res[i];if(res[cur])dfs(cur-1,tot+1);elsedfs(cur-1,tot);}else{res[cur]=0;dfs(cur-1,tot);res[cur]=1;dfs(cur-1,tot+1);} }//****************************** int main() {cin>>n>>m;For(i,1,m){int a,b;scanf("%d%d",&a,&b);matrix[a][b]=1;matrix[b][a]=1;}For(i,1,n)matrix[i][i]=1,matrix[i][n+1]=1;gauss();dfs(n,0); cout<<ans;return 0; }
转载于:https://www.cnblogs.com/planche/p/9062928.html
P2962 [USACO09NOV]灯Lights相关推荐
- 洛谷 P2962 [USACO09NOV]灯Lights
P2962 [USACO09NOV]灯Lights 题目描述 Bessie and the cows were playing games in the barn, but the power was ...
- 折半搜索+洛谷 P2962 [USACO09NOV]Lights G
题意: 有 n盏灯,每盏灯与若干盏灯相连,每盏灯上都有一个开关,如果按下一盏灯上的开关,这盏灯以及与之相连的所有灯的开关状态都会改变.一开始所有灯都是关着的,你需要将所有灯打开,求最小的按开关次数.( ...
- 高斯消元简单线性代数线性基学习记录
线性代数,唉 高斯消元 P4035 [JSOI2008]球形空间产生器 题目描述 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标 ...
- Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一)
Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一) 本文目录: 一.[旋转的精灵女孩]案例运行效果 二.Three.js简介 三.Three.js代码正常运行显示条件 (1)不载入 ...
- Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(二)
Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(二) 本篇目录: 五.实例中所使用的代码语法详细解释 (1).构建一个三维空间场景 (2).选择一个透视投影相机作为观察点 (a).创 ...
- 如何学习3D Three.js 3D引擎
http://sanshizi.iteye.com/blog/1929613 我已经用Three.js做了些小实验,这是一个比较伟大的引擎,你只需要为浏览器的不支持而头疼.你可以用它来创建摄像机(ca ...
- 如何学习Three.JS 3D引擎
我已经用Three.js做了些小实验,这是一个比较伟大的引擎,你只需要为浏览器的不支持而头疼.你可以用它来创建摄像机(cameras),对象,(objects), 光照(lights), 材质(mat ...
- CF294C Shaass and Lights(排列组合)
题目描述 There are n n n lights aligned in a row. These lights are numbered 1 1 1 to n n n from left to ...
- vector机器人 WHAT DO VECTOR‘S BACK LIGHTS MEAN? 矢量背光是什么意思?
Vector has a series of lights on his back. These Back Lights change color to show Vector's current s ...
最新文章
- (转)C# 3.0 LINQ 的演变及其对 C# 设计的影响
- iOS身份证号码识别
- Java知识点总结(Java容器-EnumSet)
- 基于XML的自动装配||SpEL测试
- 【Linux】一步一步学Linux——declare命令(217)
- confusion_matrix(混淆矩阵)
- java web过滤器
- Maven属性(properties)标签的使用
- LeetCode 1957. 删除字符使字符串变好
- 三星Galaxy Note20系列价格曝光:大小杯差距明显
- WPF TreeViewItem
- 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)...
- my sql实验视图_数据库SQL 视图的创建及使用实验报告(共5篇)
- react 小书学习笔记-state/props
- C# WinForm中NotifyICon控件的用法
- FL Studio20.9最新中文fl水果编曲软件
- CVPR2019资源汇总
- 基于HTML+CSS制作静态页面【剪纸文化15页】传统文化设计题材 dreamweaver制作静态html网页设计作业作品...
- 【Linux】一步一步学Linux——VMware Workstation 15 Pro安装图解教程(06)
- KDF- key derivation function