题目描述

农场被划分为5x5的格子,每个格子中都有一头奶牛,并且只有荷斯坦(标记为H)和杰尔西(标记为J)两个品种. 
如果一头奶牛在另一头上下左右四个格子中的任一格里,我们说它们相连. 奶牛要大选了.现在有一只杰尔西奶牛们想选择7头相连的奶牛,划成一个竞选区,使得其中它们品种的奶牛比荷斯坦的多.  
要求你编写一个程序求出方案总数. 

输入

输入5行农场的情况.

输出

输出1行,即划区方案总数.

样例输入 Copy

HHHHH

JHJHJ

HHHHH

HJHHJ

HHHHH

样例输出 Copy

2

提示

解题思路

  • 这题感觉就是就是一个巨暴力的暴力。一开始还不敢打,后来看到是道黄题,直接暴力就过了,然后加一个优化还挺快的。。。
  • 每一次去拓展7个点,然后判断一下会可不可以,然后就可以找到答案。
  • 可以非常明显的发现,对于一张图,会有很多种拓展方法,其中必有很多重复的,然后就需要去判重。
  • 判重有很多种方法,可以hash还可以用什么set...
  • set的一些用法可以去百度,或者去这里(传送门

暴力的代码:

 #include<cstdio>
const int mx[]={,,,-};
const int my[]={,,-,};
bool map[][];
int d[][];
int s[];
int nx[],ny[];
int q[];
int ans;
inline bool mark()
{
int i,j,sx,sy,xx,yy,sum=,t=,w=;
for (i=;i<=;i++)for(j=;j<=;j++)d[i][j]=;
for (i=;i<=;i++)
{
ny[i]=s[i]%;nx[i]=s[i]/;
if (ny[i])nx[i]++;
if (!ny[i])ny[i]=;
d[nx[i]][ny[i]]=i;
}
q[]=;d[nx[]][ny[]]=;sum=map[nx[]][ny[]];
while (t<w)
{
xx=nx[q[++t]];
yy=ny[q[t]];
for (int k=;k<;k++)
{
sx=xx+mx[k];sy=yy+my[k];
if (sx>&&sy>&&sx<&&sy<&&d[sx][sy])
{
q[++w]=d[sx][sy];
d[sx][sy]=;
sum+=map[sx][sy];
}
}
}
return w==&&sum>;
}
int main()
{
for (int i=;i<=;i++)
for (int j=;j<=;j++)
{
char ch=getchar();
while (ch!='H'&&ch!='J')ch=getchar();
if (ch=='J')map[i][j]=;
}
for (s[]=;s[]<=;s[]++)
for (s[]=s[]+;s[]<=;s[]++)
for (s[]=s[]+;s[]<=;s[]++)
for (s[]=s[]+;s[]<=;s[]++)
for (s[]=s[]+;s[]<=;s[]++)
for (s[]=s[]+;s[]<=;s[]++)
for (s[]=s[]+;s[]<=;s[]++)
if (mark())ans++;
printf("%d",ans);
}

问题 L: 「Usaco2005 Feb」竞选划区O(∩_∩)O 纯属的暴力的更多相关文章

  1. 1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区(题解第二弹)

    1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit:  ...

  2. 1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区(题解第一弹)

    1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit:  ...

  3. bzoj1675 [Usaco2005 Feb]Rigging the Bovine Election 竞选划区

    Description It's election time. The farm is partitioned into a 5x5 grid of cow locations, each of wh ...

  4. bzoj:1675 [Usaco2005 Feb]Rigging the Bovine Election 竞选划区

    Description It's election time. The farm is partitioned into a 5x5 grid of cow locations, each of wh ...

  5. 【BZOJ】1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区(暴力dfs+set判重)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1675 一开始我写了个枚举7个点....... 但是貌似... 写挫了. 然后我就写dfs.. 判重好 ...

  6. 「Usaco2005 Dec」清理牛棚(spfa秒杀线段树dp)

    约翰的奶牛们从小娇生惯养,她们无法容忍牛棚里的任何脏东西. 约翰发现,如果要使这群有洁癖的奶牛满意,他不得不雇佣她们中的一些来清扫牛棚, 约翰的奶牛中有N(1≤N≤10000)头愿意通过清扫牛棚来挣一 ...

  7. 「BZOJ 2534」 L - gap字符串

    「BZOJ 2534」 L - gap字符串 题目描述 有一种形如 \(uv u\) 形式的字符串,其中 \(u\) 是非空字符串,且 \(v\) 的长度正好为 \(L\), 那么称这个字符串为 \( ...

  8. [bzoj1733][Usaco2005 feb]Secret Milking Machine 神秘的挤奶机_网络流

    [Usaco2005 feb]Secret Milking Machine 神秘的挤奶机 题目大意:约翰正在制造一台新型的挤奶机,但他不希望别人知道.他希望尽可能久地隐藏这个秘密.他把挤奶机藏在他的农 ...

  9. BZOJ3392: [Usaco2005 Feb]Part Acquisition 交易

    3392: [Usaco2005 Feb]Part Acquisition 交易 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 26  Solved:  ...

随机推荐

  1. 如何正确遍历删除List中的元素(普通for循环、增强for循环、迭代器iterator、removeIf+方法引用)

    遍历删除List中符合条件的元素主要有以下几种方法: 普通for循环 增强for循环 foreach 迭代器iterator removeIf 和 方法引用 其中使用普通for循环容易造成遗漏元素的问 ...

  2. Chrome 和 Chromedriver 的安装和配置

    1.Chrome 下载安装地址:https://www.google.com/intl/zh-CN_ALL/chrome/ 2.Chromedriver的安装 方法一: (1) brew cask i ...

  3. 秘制CSP模板

    不定期更细中...... 声明1:由于js的问题导致VIEW CODE按钮只能点"I"附近才能展开代码 声明2:为了排版的美观,所有的解释以及需要留意的地方我都放在代码中了 声明3 ...

  4. MySQL make_set()的用法

    MAKE_SET(bits,str1,str2,…)返回一个设定值(含子字符串分隔字符串","字符),在设置位的相应位的字符串.str1对应于位0,str2到第1位,依此类推.在s ...

  5. linux下python相关命令

    若本机已安装python2,尽量不要动现有的python2,额外安装python3即可. 1.安装python3.6(centos下安装python3自带pip和setuptools) python3 ...

  6. 17.Linux搭建网络仓库

    1.搭建一个网络仓库 服务端:10.0.0.201 1.准备软件包(1.光盘 2.缓存 3.联网下载 4.同步) 1.挂载光盘 mount /dev/cdrom 2.通过ftp共享软件包存放的目录 y ...

  7. spark运行java-jar:Exception in thread "main" java.io.IOException: No FileSystem for scheme: hdfs

    今天碰到的一个 spark问题,困扰好久才解决 首先我的spark集群部署使用的部署包是官方提供的 spark-1.0.2-bin-hadoop2.tgz 部署在hadoop集群上. 在运行java ...

  8. 微信分享—ios和安卓机制居然不一样!

     实际项目中,在做微信分享追踪的时候,遇到了一个百思不得其解的问题. 在加入了用户分享追踪功能之后,页面已经加载完成的情况下,安卓分享功能没有任何问题,ios却总是分享失败. 关于ios和安卓设备的差 ...

  9. python爬取旅游数据+matplotlib简单可视化

    题目如下: 共由6个函数组成: 第一个函数爬取数据并转为DataFrame: 第二个函数爬取数据后存入Excel中,对于解题来说是多余的,仅当练手以及方便核对数据: 后面四个函数分别对应题目中的四个m ...

  10. 玩转PubSubClient MQTT库

    1.前言     在ESP8266学习系列中,博主一直使用HTTP协议.HTTP连接属于短连接,而在物联网应用中,广泛应用的却是MQTT协议.所以,本篇我们将学习Arduino平台上的MQTT实现库 ...