bzoj1080
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1080
神暴力,待搞懂.
代码
#include <cstdio>
#include <cmath>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
#define ll long long
using namespace std;
typedef vector<int> ve;
map <ve,int> hash;
queue<ve>q;
string s[35];
int n;
void work()
{
ve u,v,t;
for (int i=1;i<=n;i++)
if (s[i]=="")
{
printf("0");
exit(0);
}
else u.push_back(i<<6);
hash[u]=0;
for(q.push(u);!q.empty();)
{
u=q.front();
q.pop();
int x=hash[u],cnt;
for (int ch='0';ch<='1';ch++)
{
cnt=0;
v.clear();
for (int i=0;i<u.size();i++)
{
int which=u[i]>>6,where=u[i]&63;
if (s[which][where]^ch) continue;
if(++where==s[which].size()) {
++cnt;
for (int j=1;j<=n;j++)v.push_back(j << 6);
}else v.push_back(which<<6|where);
}
if(cnt>=3)
{
printf("%d",x+1);
exit(0);
}
sort(v.begin(),v.end());
t.clear();
for (int i=0;i<v.size();i++)
{
if(i<3||v[i]^v[i-3]) t.push_back(v[i]);
}
int &th=hash[t];
if (t.size()&&!th) th=x+1,q.push(t);
}
}
printf("-1");
}
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;i++) cin>>s[i];
work();
return 0;
}
bzoj1080的更多相关文章
- BZOJ1080 暴力+位移运算符的用法
1080: [SCOI2008]劣质编码 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 337 Solved: 148[Submit][Status ...
- BZOJ第1页养成计划
嗯,用这篇博客当一个目录,方便自己和学弟(妹?)们查阅.不定期更新. BZOJ1000 BZOJ1001 BZOJ1002 BZOJ1003 BZOJ1004 BZOJ1005 ...
随机推荐
- 关于ios 3D变换 CGAffineTransformIdentity
每次做完3D变换以后,重新设置view的frame时,记得用CGAffineTransformIdentity 对3D变换进行还原,否则将会影响frame.当你对view进行3D变换后,重新设置vie ...
- 2.4.1 用NPOI操作EXCEL--画线(转)
之所有说NPOI强大,是因为常用的Excel操作她都可以通过编程的方式完成.这节开始,我们开始学习NPOI的画图功能.先从最简单的开始,画一条直线:对应的代码为: HSSFSheet sheet1 = ...
- 完全使用接口方式调用WCF 服务
客户端调用WCF服务可以通过添加服务引用的方式添加,这种方式使用起来比较简单,适合小项目使用.服务端与服务端的耦合较深,而且添加服务引用的方式生成一大堆臃肿的文件.本例探讨一种使用接口的方式使用WCF ...
- 从Swift3的标准库协议看面向协议编程(一)
Swift中,大量内置类如Dictionary,Array,Range,String都使用了协议 先看看Hashable 哈希表是一种基础的数据结构.,Swift中字典具有以下特点:字典由两种范型类型 ...
- oracle中的使用总结一
1.ORA-12560: TNS: 协议适配器错误 造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个: 1.监听服务没有起起来.windows平台个一如下操作:开始---程序--- ...
- cs
cs <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...
- 点击切换panel
//点击标题切换 $("li[class^='fore-']").click(function(){ var nomber = $(this).index();//点击的第几个 $ ...
- 《30天自制操作系统》19_day_学习笔记
harib16a: 这一部分,我们在系统中实现读取文件内容的命令type.在windows中,输入“type 文件名”,在Linux中,输入“cat 文件名”都可以显示文件的内容.我们先来看看如何读取 ...
- 批判性思维——Asking The Right Questions
我们生活在一个纷繁复杂的数字世界中,每天都在信息海洋中遨游.如果不想被其淹没,继而成为别人思想的傀儡,就有必要对你接受的信息进行批判.筛选,自己决定该相信什么不该相信什么,进而形成自己的观点,而不是一 ...
- FTP服务器的安装和配置
FTP服务器的安装和配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本来是想出一个源码安装ftp的教程,但是想想还是算了,如果你自学python有个10天的话你自己就能写一个f ...