高斯消元解XOR方程组

  一眼看上去是高斯消元解xor方程组……但是不会写……sad

  去膜拜了HzwerZYF

  Hzwer啥也没说,还是zyf靠谱……

  当多解的时候就需要爆搜枚举自由元的情况,找最优解……

o(︶︿︶)o 唉我还是太弱了

zyf的解释:

 inline void dfs(int x)
{
if(tot>=mn)return;//最优性剪枝
if(!x){mn=min(mn,tot);return;}//终点
if(f[x][x])//已被限制是否需要按下
{
int t=f[x][n+];
for2(i,x+,n)if(f[x][i])t^=ans[i];
ans[x]=t;
if(t)tot++;
dfs(x-);//继续深搜
if(t)tot--;//还原,回溯
}
else//自由变量
{
ans[x]=;dfs(x-);//假设不按该灯开关
ans[x]=;tot++;dfs(x-);tot--;//假设按该灯开关
}
}
 /**************************************************************
Problem: 1770
User: Tunix
Language: C++
Result: Accepted
Time:4 ms
Memory:1284 kb
****************************************************************/ //BZOJ 1770
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
using namespace std;
const int N=;
typedef long long LL;
int n,m,f[N][N],_min=1e7,ans[N],tot; void gauss(){
F(i,,n){
int j=i;
while(j<=n && !f[j][i]) j++;
if(j>n) continue;
if(i!=j) F(k,,n+) swap(f[i][k],f[j][k]);
F(j,,n) if(i!=j && f[j][i])
F(k,,n+) f[j][k]^=f[i][k];
}
}
void dfs(int x){
if(tot>=_min) return;
if(!x){
_min=min(_min,tot);
return;
}
if(f[x][x]){
int t=f[x][n+];
F(i,x+,n)
if(f[x][i]) t^=ans[i];
ans[x]=t;
if(t) tot++;
dfs(x-);
if(t) tot--;
}
else{
ans[x]=; dfs(x-);
ans[x]=; tot++; dfs(x-); tot--;
}
}
int main(){
scanf("%d%d",&n,&m);
F(i,,n) f[i][i]=f[i][n+]=;
int x,y;
F(i,,m){
scanf("%d%d",&x,&y);
f[x][y]=f[y][x]=;
}
gauss();
dfs(n);
printf("%d\n",_min);
return ;
}

【BZOJ】【1770】【Usaco2009 Nov】lights 灯的更多相关文章

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

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

  2. BZOJ 1770: [Usaco2009 Nov]lights 燈

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

  3. BZOJ 1770: [Usaco2009 Nov]lights 燈 [高斯消元XOR 搜索]

    题意: 经典灯问题,求最少次数 本题数据不水,必须要暴搜自由元的取值啦 想了好久 然而我看到网上的程序都没有用记录now的做法,那样做遇到自由元应该可能会丢解吧...? 我的做法是把自由元保存下来,枚 ...

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

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

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

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

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

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

  7. bzoj1770: [Usaco2009 Nov]lights 燈(折半搜索)

    1770: [Usaco2009 Nov]lights 燈 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1153  Solved: 564[Submi ...

  8. bzoj 2017 [Usaco2009 Nov]硬币游戏 动态规划

    [Usaco2009 Nov]硬币游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 431  Solved: 240[Submit][Status] ...

  9. 【BZOJ 1770 】 [Usaco2009 Nov]lights 燈 dfs+异或方程组

    这道题明显是异或方程组,然而解不一定唯一他要的是众多解中解为1的数的最小值,这个时候我们就需要dfs了我们dfs的时候就是枚举其有不确定解的数上选0或1从而推知其他解,由于我们dfs的时候先0后1,虽 ...

  10. bzoj千题计划187:bzoj1770: [Usaco2009 Nov]lights 燈 (高斯消元解异或方程组+枚举自由元)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1770 a[i][j] 表示i对j有影响 高斯消元解异或方程组 然后dfs枚举自由元确定最优解 #in ...

随机推荐

  1. SQL Server 2008R2 禁用远程连接

    很多人在开发过程中都会用多数据库(这里仅讨论MSSQL),也都会在服务器上装MSSQL,在你装上MSSQL后,机器上的1433端口就被激活了.如果你的服务器是在内网,也许不用过多的关注,如果你的服务器 ...

  2. [转] 正则表达式 oracle

    地址:http://www.cnblogs.com/Azhu/archive/2012/04/03/2431127.html 从oracle database 10gsql 开发指南中copy的. 正 ...

  3. 项目经理PPT演讲意见

    1.语速 2.互动 3.平常语气,聊天的感觉去讲解 4.脱稿演讲,不要照着PPT读,PPT展示仅仅是一个重点提示,更多在于自己讲解 5.如果是验收等相关的内容,劲量多讲解用户能够得到的利益,如“钱” ...

  4. ajax 返回数据 无法得到其属性的解决办法

    当我们用ajax无法 得到其属性.正常情况下是: <script type="text/javascript">        function useAjax(sen ...

  5. js、expression表达式解析

    首先理解一下下面的表达式:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeigh ...

  6. How to use For loop in CruiseControl.net

    Looping through parameter values in Cruisecontrol.net Example >>>>>>>>>&g ...

  7. 简单解析依赖注入(控制反转)在Spring中的应用

    IoC——Inversion of Control  控制反转DI——Dependency Injection   依赖注入 大家都知道,依赖注入是Spring中非常重要的一种设计模式.可能很多初学者 ...

  8. SQL语句执行顺寻

    SQL语句执行的时候是有一定顺序的.理解这个顺序对SQL的使用和学习有很大的帮助. 1.from 先选择一个表,或者说源头,构成一个结果集. 2.where 然后用where对结果集进行筛选.筛选出需 ...

  9. c++11: less的用法

    less主要是重载了operator()方法,用来比较lhs 和 rhs std::less::operator() bool operator()(const T &lhs, const T ...

  10. Linux C 程序 Linux网络编程(21)

    Linux网络编程网络编程必备的理论基础网络模型,地址,端口,TCP/IP协议 TCP/IP协议是目前世界上使用最广泛的网络通信协议日常中的大部分应用使用该系列协议(浏览网页,收发电子邮件,QQ聊天等 ...