BZOJ 1770: [Usaco2009 Nov]lights 燈
Description
一个图,对一个点进行操作会改变这个点及其相邻的点的状态,问全部变成黑色至少需要几次.数据保证有解.
Sol
Meet in middle.
我一开始写个高斯消元,发现有两个点过不去,原因是没有处理好自由元,应该在DFS的时候回带所有解,然后就弃疗了.
然后发现这个其实可以暴力,就是 Meet in middle...
先把前一半暴力枚举存到 map 里,后一半再枚举,从 map 中找补集.
复杂度 \(O(2^{13})\)
Code
/**************************************************************
Problem: 1770
User: BeiYu
Language: C++
Result: Accepted
Time:416 ms
Memory:5384 kb
****************************************************************/ #include <cstdio>
#include <map>
#include <iostream>
using namespace std; typedef long long LL;
const int N = 40; int n,m,ans=N;
LL state,pow2[N],a[N];
map< LL,int > mp; void DFS1(int l,int r,int w,LL s){
if(l>r){ if(mp.find(s)==mp.end() || mp[s]>w) mp[s]=w;return; }
DFS1(l+1,r,w,s);
DFS1(l+1,r,w+1,s^a[l]);
}
void DFS2(int l,int r,int w,LL s){
if(l>r){ if(mp.find(state^s)!=mp.end()) ans=min(ans,w+mp[state^s]);return; }
DFS2(l+1,r,w,s);
DFS2(l+1,r,w+1,s^a[l]);
}
int main(){
cin>>n>>m;
pow2[0]=1LL;
for(int i=1;i<=n;i++) pow2[i]=pow2[i-1]<<1;
for(int i=0;i<n;i++) a[i]|=pow2[i],state|=pow2[i];
for(int i=1,u,v;i<=m;i++){
cin>>u>>v;
u--,v--;
a[u]|=pow2[v],a[v]|=pow2[u];
}
DFS1(0,min(n-1,n/2),0,0);
DFS2(min(n-1,n/2)+1,n-1,0,0);
cout<<ans<<endl;
return 0;
}
BZOJ 1770: [Usaco2009 Nov]lights 燈的更多相关文章
- BZOJ 1770: [Usaco2009 Nov]lights 燈( 高斯消元 )
高斯消元解xor方程组...暴搜自由元+最优性剪枝 -------------------------------------------------------------------------- ...
- 【高斯消元】BZOJ 1770: [Usaco2009 Nov]lights 燈
Description 貝希和她的閨密們在她們的牛棚中玩遊戲.但是天不從人願,突然,牛棚的電源跳閘了,所有的燈都被關閉了.貝希是一個很膽小的女生,在伸手不見拇指的無盡的黑暗中,她感到驚恐,痛苦與絕望. ...
- BZOJ 1770: [Usaco2009 Nov]lights 燈 [高斯消元XOR 搜索]
题意: 经典灯问题,求最少次数 本题数据不水,必须要暴搜自由元的取值啦 想了好久 然而我看到网上的程序都没有用记录now的做法,那样做遇到自由元应该可能会丢解吧...? 我的做法是把自由元保存下来,枚 ...
- bzoj 1770: [Usaco2009 Nov]lights 燈【高斯消元+dfs】
参考:https://blog.csdn.net/qq_34564984/article/details/53843777 可能背了假的板子-- 对于每个灯建立方程:与它相邻的灯的开关次数的异或和为1 ...
- 【BZOJ】1770 [Usaco2009 Nov]lights 燈
[算法]高斯消元-异或方程组 [题解]良心简中题意 首先开关顺序没有意义. 然后就是每个点选或不选使得最后得到全部灯开启. 也就是我们需要一种确定的方案,这种方案使每盏灯都是开启的. 异或中1可以完美 ...
- bzoj1770: [Usaco2009 Nov]lights 燈(折半搜索)
1770: [Usaco2009 Nov]lights 燈 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1153 Solved: 564[Submi ...
- 【BZOJ 1770 】 [Usaco2009 Nov]lights 燈 dfs+异或方程组
这道题明显是异或方程组,然而解不一定唯一他要的是众多解中解为1的数的最小值,这个时候我们就需要dfs了我们dfs的时候就是枚举其有不确定解的数上选0或1从而推知其他解,由于我们dfs的时候先0后1,虽 ...
- bzoj千题计划187:bzoj1770: [Usaco2009 Nov]lights 燈 (高斯消元解异或方程组+枚举自由元)
http://www.lydsy.com/JudgeOnline/problem.php?id=1770 a[i][j] 表示i对j有影响 高斯消元解异或方程组 然后dfs枚举自由元确定最优解 #in ...
- BZOJ1770 : [Usaco2009 Nov]lights 燈
设$f[i]$表示$i$点按下开关后会影响到的点的集合,用二进制表示. 不妨设$n$为偶数,令$m=\frac{n}{2}$,对于前一半暴力$2^m$搜索所有方案,用map维护每种集合的最小代价. 对 ...
随机推荐
- 转:Eclipse Search Tips
from: https://github.com/ajermakovics/eclipse-instasearch/wiki/Eclipse-search-tips Eclipse Search T ...
- 初识javascript变量和基本数据类型
1.1首先,学习使用firebug控制台.设置一下firefox 中的配置选项,以便使控制台中的javascript警告更为严格...以方便我们更好的找出程序中不必要的bug. 1. 在火狐浏览器fi ...
- 当Table中td内容为空时,显示边框的办法
1. 在 table的css里面加: border-collapse:collapse;在 td 的css里面加: empty-cells:show; 2 .最简单的就是 在TD里写个 说明: ...
- HTML 转 PDF
使用WkHtmlToXSharp,免费的软件,内集成了chrome 的内核,可以对CSS进行渲染,很好用 是需要传入 HTML 网页地址就可以转化为PDF文件,不过网页的编码要是 utf-8 Nuge ...
- 重新注册IIS
出现问题的原因是先装了.NET4.0,再装IIS造成 处理方法:管理员权限执行cmd, C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_reg ...
- Mbatis Oracle 第一次插入失败 useGeneratedKeys
<insert id="insertAgentInfo" parameterType="pd" useGeneratedKeys="false& ...
- Spring IoC容器的初始化过程
Spring IoC容器的初始化包括 BeanDefinition的Resource定位.载入和注册 这三个基本的过程.IoC容器的初始化过程不包含Bean依赖注入的实现.Bean依赖的注入一般会发生 ...
- java分析源码-ReentrantLock
一.前言 在分析了 AbstractQueuedSynchronier 源码后,接着分析ReentrantLock源码,其实在 AbstractQueuedSynchronizer 的分析中,已经提到 ...
- 通过jquery的serializearray处理表单数据成json格式,并提交到后台处理
var params = $("#myform").serializeArray(); var values = {}; for (var item in params) { va ...
- grafana日志分析界面及导出的json文件
日志分析面板导出的json文件,效果图如下: 下载地址:http://files.cnblogs.com/files/xiaoming279/%E9%9D%A2%E6%9D%BF.zip 主机面板 主 ...