博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Usaco2009 Nov]lights(高斯消元)
阅读量:6696 次
发布时间:2019-06-25

本文共 1590 字,大约阅读时间需要 5 分钟。

点灯游戏应该很多人都在小时候頽过吧

反正我直到现在也不会

很明显一个灯最多只需要点一次

然后高斯消元

解完肯定剩自由元(就是那些全是0的行)

然后这些都爆搜

由于剩下的自由元不会太多

所以时间复杂度$O(能过)$

以上

1 #include
2 #include
3 using std::swap; 4 const int N=40; 5 template
void read(tp &kk){ 6 tp ret=0,f=1;char ch=getchar(); 7 while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;ch=getchar();} 8 while(ch>='0'&&ch<='9'){ret=ret*10+ch-'0';ch=getchar();} 9 kk=ret*f;10 }11 int n,a[N][N];12 13 14 void gauss()15 {16 for(int l=1;l<=n;l++)17 {18 int g=l;19 while(g<=n&&(!a[g][l])) g++;20 if(g>n) continue;21 if(l!=g)22 for(int i=l;i<=n+1;i++) swap(a[l][i],a[g][i]);23 for(int i=1;i<=n;i++)24 {25 if(a[i][l]&&i!=l)26 {27 for(int j=l;j<=n+1;j++) a[i][j]^=a[l][j];28 }29 }30 }31 }32 33 int ans;34 void wtf(int l,int x)35 {36 if(x>ans) return;37 if(!l){ans=x;return;}38 if(a[l][l]) wtf(l-1,x+a[l][n+1]);39 else40 {41 if(a[l][n+1]) return;42 wtf(l-1,x);43 for(int i=l-1;i;i--) a[i][n+1]^=a[i][l];44 wtf(l-1,x+1);45 for(int i=l-1;i;i--) a[i][n+1]^=a[i][l];46 }47 }48 int m,xi,yi;49 int main()50 {51 read(n),read(m);52 for(int i=1;i<=n;i++) a[i][i]=a[i][n+1]=1;53 for(int i=1;i<=m;i++)54 {55 read(xi),read(yi);56 a[xi][yi]^=1,a[yi][xi]^=1;57 }58 gauss();59 ans=n;60 wtf(n,0);61 printf("%d\n",ans);62 return 0;63 }
orz

 

转载于:https://www.cnblogs.com/rikurika/p/light.html

你可能感兴趣的文章
学习过程中的一些想法
查看>>
PHP 处理金额
查看>>
阿里云 Aliplayer高级功能介绍(九):自动播放体验
查看>>
dubbo源码解析(十)远程通信——Exchange层
查看>>
跨越解决方案之nginx
查看>>
ES6学习笔记
查看>>
SpringMVC工作原理
查看>>
【前端面试】字节跳动2019校招面经 - 前端开发岗(二)
查看>>
前端进阶系列(六):盒模型
查看>>
Android开发 - 掌握ConstraintLayout(一)传统布局的问题
查看>>
使用el-checkbox实现全选,点击失效没有反应
查看>>
webpack4.x 模块化浅析-CommonJS
查看>>
深解微服务架构:从过去,到未来
查看>>
聊聊毕业设计系列 --- 系统实现
查看>>
vue弹窗插件实战
查看>>
vue如何实现单页缓存方案分析
查看>>
WEB/H5性能优化总结
查看>>
js转换字符串为base64位
查看>>
弹性布局
查看>>
Laravel5.5之事件监听、任务调度、队列
查看>>