题意:

经典灯问题,求最少次数


本题数据不水,必须要暴搜自由元的取值啦

想了好久

然而我看到网上的程序都没有用记录now的做法,那样做遇到自由元应该可能会丢解吧...?

我的做法是把自由元保存下来,枚举的时候只枚举自由元

但这样没法最优性剪枝了

于是枚举的时候还是从n到1枚举,到i时如果i是主元这时候i的值已经可以算出来了,这样就可以最优性剪枝了

但注意主元i你不能用i这个方程,而要保存pivot[i]为i用了哪个方程

然后一个伪贪心策略是自由元先搜0

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <bitset>
using namespace std;
const int N=,INF=1e9;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int n,m,u,v;
bitset<N> a[N];
int fe[N],now,pivot[N];
void Gauss(){
now=;
for(int i=;i<=n;i++){
int j=now;//printf("hi %d %d %d\n",i,now,a[now][i]==1);
while(j<=n&&!a[j][i]) j++;
if(j==n+) {fe[++fe[]]=i;continue;}
if(j!=now) swap(a[now],a[j]);
for(int j=;j<=n;j++)
if(j!=now&&a[j][i]) a[j]^=a[now];
pivot[i]=now;//printf("pivot %d\n",i);
now++;
}
}
int val[N],tot,ans=INF;
void pri(){
puts("free");
for(int i=;i<=fe[];i++) printf("fe %d %d %d\n",i,fe[i],val[i]);
puts("end");
}
int fir=;
void dfs(int d){
//printf("dfs %d %d\n",d,tot);
if(tot>=ans) return;
if(d==) ans=min(ans,tot);//if(fir==1) printf("tot %d\n",tot),pri(),fir=0;}
else if(pivot[d]){//printf("d %d\n",d);
int i=pivot[d];
int _=a[i][n+];
for(int j=;j<=fe[];j++)
if(a[i][fe[j]]) _^=val[fe[j]];
tot+=_;
dfs(d-);
tot-=_;
}else{
val[d]=;
dfs(d-);
val[d]=; tot++;
dfs(d-);
tot--;
}
}
int main(){
//freopen("in","r",stdin);
n=read();m=read();
for(int i=;i<=m;i++) u=read(),v=read(),a[u][v]=a[v][u]=;
for(int i=;i<=n;i++) a[i][n+]=a[i][i]=;
Gauss();
//for(int i=1;i<=n;i++) printf("a %d %d\n",i,a[i][n+1]==1);
//for(int i=1;i<=fe[0];i++) printf("fe %d %d\n",i,fe[i]);
dfs(n);
printf("%d",ans);
}

BZOJ 1770: [Usaco2009 Nov]lights 燈 [高斯消元XOR 搜索]的更多相关文章

  1. BZOJ 1770: [Usaco2009 Nov]lights 燈( 高斯消元 )

    高斯消元解xor方程组...暴搜自由元+最优性剪枝 -------------------------------------------------------------------------- ...

  2. 【高斯消元】BZOJ 1770: [Usaco2009 Nov]lights 燈

    Description 貝希和她的閨密們在她們的牛棚中玩遊戲.但是天不從人願,突然,牛棚的電源跳閘了,所有的燈都被關閉了.貝希是一個很膽小的女生,在伸手不見拇指的無盡的黑暗中,她感到驚恐,痛苦與絕望. ...

  3. bzoj 1770: [Usaco2009 Nov]lights 燈【高斯消元+dfs】

    参考:https://blog.csdn.net/qq_34564984/article/details/53843777 可能背了假的板子-- 对于每个灯建立方程:与它相邻的灯的开关次数的异或和为1 ...

  4. BZOJ 1770: [Usaco2009 Nov]lights 燈

    Description 一个图,对一个点进行操作会改变这个点及其相邻的点的状态,问全部变成黑色至少需要几次.数据保证有解. Sol Meet in middle. 我一开始写个高斯消元,发现有两个点过 ...

  5. 【BZOJ】1770 [Usaco2009 Nov]lights 燈

    [算法]高斯消元-异或方程组 [题解]良心简中题意 首先开关顺序没有意义. 然后就是每个点选或不选使得最后得到全部灯开启. 也就是我们需要一种确定的方案,这种方案使每盏灯都是开启的. 异或中1可以完美 ...

  6. BZOJ1770:[USACO]lights 燈(高斯消元,DFS)

    Description 貝希和她的閨密們在她們的牛棚中玩遊戲.但是天不從人願,突然,牛棚的電源跳閘了,所有的燈都被關閉了.貝希是一個很膽小的女生,在伸手不見拇指的無盡的黑暗中,她感到驚恐,痛苦與絕望. ...

  7. BZOJ 3105: [cqoi2013]新Nim游戏 [高斯消元XOR 线性基]

    以后我也要用传送门! 题意:一些数,选择一个权值最大的异或和不为0的集合 终于有点明白线性基是什么了...等会再整理 求一个权值最大的线性无关子集 线性无关子集满足拟阵的性质,贪心选择权值最大的,用高 ...

  8. BZOJ 1923: [Sdoi2010]外星千足虫 [高斯消元XOR]

    1923: [Sdoi2010]外星千足虫 对于 100%的数据,满足 N≤1,000,M≤2,000. 裸高斯消元解异或方程组 给定方程顺序要求用从上到下最少的方程,那么找主元时记录一下最远找到哪个 ...

  9. POJ1222 EXTENDED LIGHTS OUT 高斯消元 XOR方程组

    http://poj.org/problem?id=1222 在学校oj用搜索写了一次,这次写高斯消元,haoi现场裸xor方程消元没写出来,真实zz. #include<iostream> ...

随机推荐

  1. 【Keras】基于SegNet和U-Net的遥感图像语义分割

    上两个月参加了个比赛,做的是对遥感高清图像做语义分割,美其名曰"天空之眼".这两周数据挖掘课期末project我们组选的课题也是遥感图像的语义分割,所以刚好又把前段时间做的成果重新 ...

  2. JEECG 3.7.1 版本发布,企业级JAVA快速开发平台

    JEECG 3.7.1 版本发布,企业级JAVA快速开发平台 ---------------------------------------- Version:  Jeecg_3.7.1项 目:   ...

  3. JavaScript八张思维导图—字符串用法

    JS基本概念 JS操作符 JS基本语句 JS数组用法 Date用法 JS字符串用法 JS编程风格 JS编程实践 不知不觉做前端已经五年多了,无论是从最初的jQuery还是现在火热的Angular,Vu ...

  4. JVM GC杂谈之理论入门

    GC杂谈之理论入门 JVM堆布局介绍 ​ JVM堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( Old ).新生代 ( Young ) 又被划分为三个区域:Eden.From Sur ...

  5. 邓_php面试【002】——完整版

    1.用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分) $a = date("Y-m-d H:i:s", strtotime("-1 day&q ...

  6. sqlite效率探测

    在编译后当然就是使用sqlite,贸贸然去测试了一下创建数据库,插入数据,仅几条数据,发现,真不错的数据库,后来把数据量提高到10000的 时候,发现,怎么这么慢,后来自己都受不了,网上一查,原来是如 ...

  7. Linuxc - 操作系统内存分配

    静态变量是存储在数据段的,在函数中可以共用. 全局变量也是存储在数据段的,在全局中可以共用. 指针变量本质上是地址,数组变量本质上也是地址. 数组是可靠的,不可变的地址.指针变量是不可靠的,可变的.数 ...

  8. Javascript学习--烟花

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. SpringMVC的filter怎么使用Autowired依赖注入bean

      有的时候根据我们业务的需要,我们需要在web项目中定义一个自己的filter,并想在这个filter中使用@Autowired注入bean供我们使用.如果直接使用的话是不行的,需要我们在xml文件 ...

  10. HTML学习(二)

    表格和列表 <!-- /* @dl→definition list(定义列表),ul→unordered list(无序列表),ol→ordered list * @一个完整的表格.table. ...