题意:

给了这样一张图 有两种状态:pushed(*)和unpushed(.)    为方便起见分别成为 开 和 关

改变一个点的开关状态 会同时改变与它相邻的点的开关状态  比如改变5,则2、3、4、6、8、9都会改变

N(行数)最多为6 即 最多21个点

求: 任意改变开关状态后 最多能有几个关着。

为什么这么像高斯消元!!!

每个点的状态只有开和关 总共就只有2^21个状态

dfs会爆栈!

所以bfs就行了! 把这些点的开关状态看成二进制 用0到$2^{21}$的数组来标记当前状态有没有出现过

 struct node
{
bool a[];
}front, rear;
queue<node> q;
int ans;
bool vis[];
int biao[]={, , , , , , };
int b[][]={
{,},
{-,},
{-,-},
{,},
{,},
{,},
{,-}
};
int l[], c[][];
void pre()
{
memset(l, , sizeof(l));
for(int i=;i<=;i++)
{
int x=;
while(biao[x]<i)
x++;
int y=i-x*(x-)/;
for(int k=;k<;k++)
{
int dx=x+b[k][];
int dy=y+b[k][];
if(dx>= && dx<= && dy>= && dy<=dx)
c[i][l[i]++]=dx*(dx-)/+dy;
}
}
}
void bfs(int n)
{
int d=;
for(int i=;i<=n;i++)
d=(d<<)+front.a[i];
vis[d]=;
q.push(front);
while(!q.empty())
{
front=q.front();
q.pop();
for(int i=;i<=n;i++)
if(!front.a[i])
{
rear=front;
for(int j=;j<l[i];j++)
rear.a[c[i][j]]=^front.a[c[i][j]];
d=;
int cnt=;
for(int j=;j<=n;j++)
{
d=(d<<)+rear.a[j];
if(!rear.a[j])
cnt++;
}
if(!vis[d])
{
vis[d]=;
ans=max(ans, cnt);
if(ans==n)
return ;
q.push(rear);
}
}
}
}
int main()
{
pre();
int n;
while(~scanf("%d", &n))
{
ans=;
for(int i=;i<=n;i++)
for(int j=;j<=i;j++)
{
char ch;
cin>>ch;
if(ch=='.')
ans++;
front.a[i*(i-)/+j]=(ch=='*');
}
n=(n+)*n/;
if(ans==n)
{
printf("%d\n", ans);
continue;
}
while(!q.empty())
q.pop();
memset(vis, , sizeof(vis));
bfs(n);
printf("%d\n", ans);
}
return ;
}

ZOJ 3038

[水题]ZOJ3038 Triangle War II的更多相关文章

  1. hdu 1140:War on Weather(计算几何,水题)

    War on Weather Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  2. BNU29064——硬币水题II——————【事件概率】

    硬币水题II Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java class name: ...

  3. HDU 6300.Triangle Partition-三角形-水题 (2018 Multi-University Training Contest 1 1003)

    6300.Triangle Partition 这个题就是输出组成三角形的点的下标. 因为任意三点不共线,所以任意三点就可以组成三角形,直接排个序然后输出就可以了. 讲道理,没看懂官方题解说的啥... ...

  4. ACM水题

    ACM小白...非常费劲儿的学习中,我觉得目前我能做出来的都可以划分在水题的范围中...不断做,不断总结,随时更新 POJ: 1004 Financial Management 求平均值 杭电OJ: ...

  5. hdu 2393:Higher Math(计算几何,水题)

    Higher Math Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  6. 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem A: The 3n + 1 problem(水题)

    Problem A: The 3n + 1 problem Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 14  Solved: 6[Submit][St ...

  7. Atcoder 水题选做

    为什么是水题选做呢?因为我只会水题啊 ( 为什么是$Atcoder$呢?因为暑假学长来讲课的时候讲了三件事:不要用洛谷,不要用dev-c++,不要用单步调试.$bzoj$太难了,$Topcoder$整 ...

  8. 【转】POJ百道水题列表

    以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...

  9. NYOJ-525一道水题思路及详解

    一道水题 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 今天LZQ在玩一种小游戏,但是这游戏数有一点点的大,他一个人玩的累,想多拉一些人进来帮帮他,你能写一个程序帮帮他 ...

随机推荐

  1. 在知乎回答的一个问题:C#初学者以后往WP开发走,还是往unity3d走?哪个更有前景呢

    问题原文:我是一个C#初学者,想问个问题,我以后是该往WP开发方向走呢还是学习Unity3D往游戏开发,哪个更有前景呢,个人感觉未来几年iOS,WP,Java会三足鼎立,WP现在有潜力,但是U3D现在 ...

  2. Java 简单算法--排序

    1. 冒泡排序 package cn.magicdu.algorithm; public class BubbleSort { public static void main(String[] arg ...

  3. 20160503-spring入门1

    一.Spring是什么 Spring是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目得是简化企业开发. IOC 控制反转  publ ...

  4. java web 优化札记

    1.效果最明显最简单最省事的优化是SSD,一般优化效率3倍起,(未必对,但是说明很多瓶颈问题都是存储问题) 2.垂直扩容省了开发时间,短期来看是最快的,缺点是会消耗更多的资源,而且有瓶颈,另外如果应用 ...

  5. C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据

    #region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// ...

  6. 缓存(之一) 使用Apache Httpd实现http缓存

    http://www.tuicool.com/articles/EFfeu2 HTTP性能的问题与方案 一个最终用户访问一个网页,从浏览器发出请求,到接受请求,时间大体上消耗在了以下几个部分: 建立t ...

  7. Cisco交换机中的flash,Rom,RAM,nvram的区别

    Flash内存,也叫闪存,是路由器当中常用的一种内存类型.它是可读写的存储器,在系统重新启动或关机之后仍能保存数据.Flash中存放着当前使用中的IOS(路由器操作系统). 只读内存(ROM)在Cis ...

  8. asp:第三平台登陆

    第三平台登陆接口申请网址: http://open.51094.com/ 文档: 第三方合作登录平台使用说明 为方便更多的开发朋友,本人特将当前市面上所有支持第三方联合登录的接口集为一体,以前需要多次 ...

  9. 严重: Exception starting filter struts2 java.lang.NullPointerException (转载)

    严重: Exception starting filter struts2 java.lang.NullPointerException at com.opensymphony.xwork2.util ...

  10. Nginx+keepalived实现负载均衡

    Nginx的优点是: 1.工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名.目录结构,它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,Nginx ...