1057: Beautiful Garden

Time Limit: 5 Sec  Memory Limit: 128 MB
Submit: 25  Solved: 12
[Submit][Status][Web
Board
]

Description

There's a beautiful garden whose size is  n  × m  in Edward's house. The garden can be 
partitioned  into  n  ×  m  equal-sized  square  chunks.  There  are  some  kinds  of  flowers 
planted in each square chunk which can be represented by using lowercase letters.
However, Edward thinks the garden is not beautiful enough. Edward wants to build a 
water  pool  in  the  garden.  So  that  the  garden  would  look  like  symmetric  (both 
horizontally and vertically). The water pool is a rectangle whose size is  p  × q  and the 
center of the water pool is also the center of the garden.
Something else important you should know is:
  n, m, p and q are all even.
  p is always less than n.
  q is always less than m.
  The borders of the water pool are parallel to the border of garden.
Edward wants to know how many different pairs of (p, q) he can choose.

Input

There are multiple test cases. The first line of input contains an integer  T  indicating 
the number of test cases. For each test case:
The first line contains two integers  n  and  m  (1 <=  n,  m  <= 2000,  n  and  m  are even), 
indicating  the  size  of  the  garden.  For  next  n  lines,  each  line  contains  m  characters 
showing the garden.
It is guaranteed that only lowercase letters will appear.

Output

For  each  test  case,  output  an  integer  indicating  the  number  of  choices  to  build  the 
water pool.

Sample Input

3
6 8
acbbbbca
dcaccacd
cdaddadc
cdaddadc
dcaccacd
acbbbbca
6 8
acbcbbca
dcaccacd
cdaddadc
cdaddadc
dcaccacd
acbbbbca
6 8
acbbbbca
dcadcacd
cdaddadc
cdaddadc
dcaccacd
acbbbbca

Sample Output

6
0
3

HINT

For the first sample, you have following six choices (blank rectangle means the water

pool): 

很蛋疼的一道题,需要仔细调试。还有具体怎么计算呢?若下标均从0开始,显然上面的可抹除部分有2行(1与2),3列(1,2,3),那么答案就是2*3,其他情况均用这种办法求解。

代码:

#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<sstream>
#include<cstring>
#include<cstdio>
#include<string>
#include<deque>
#include<cmath>
#include<queue>
#include<set>
#include<map>
using namespace std;
char pos[2009][2009];
int hang,lie;
inline bool huiwen(const char s[])
{
int len=strlen(s);
int i;
for (i=0; i<len/2;i++)
{
if(s[i]!=s[len-1-i])
return false;
}
return true;
}
int main(void)
{
int t,i,j,l,r;
scanf("%d",&t);
while (t--)
{
memset(pos,0,sizeof(pos));
scanf("%d%d",&hang,&lie);
for (i=0; i<hang; i++)
{
scanf("%s",pos[i]);
}
l=hang/2-1;
r=lie/2-1;
for (i=0; i<hang/2; i++)//判断上下是否相同且回文
{
if( (strcmp(pos[i],pos[hang-1-i])!=0) || (!huiwen(pos[i])) || (!huiwen(pos[hang])))
{
l=i;
break;
}
}
bool ok=0;
for (i=0; i<lie/2; i++)//列相同判断
{
for (j=l; j<=hang-1-l; j++)
{
if(pos[j][i]!=pos[j][lie-1-i])
{
r=i;
ok=1;
break;
}
}
if(ok)
break;
}
for (i=0; i<r; i++)//列回文判断(放到上面的for里十分麻烦,独立出来判断)
{
for (j=l; j<hang/2; j++)
{
if(pos[j][i]!=pos[hang-1-j][i])
{
r=min(r,i);//肯定要取小的那列
ok=1;
break;
}
}
if(ok)
break;
}
printf("%d\n",l*r);//输出答案
}
return 0;
}

ACM程序设计选修课——1057: Beautiful Garden(模拟+耐心调试)的更多相关文章

  1. ACM程序设计选修课——1044: (ds:队列)打印队列(queue模拟)

    问题 A: (ds:队列)打印队列 时间限制: 1 Sec  内存限制: 128 MB 提交: 25  解决: 4 [提交][状态][讨论版] 题目描述 网络工程实验室只有一台打印机,它承担了非常繁重 ...

  2. ACM程序设计选修课——1030: Hungar的时尚球场(水题+耐心)

    1030: Hungar的时尚球场 Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 14  Solved: 8 [Submit][Status][Web ...

  3. ACM程序设计选修课——1076汇编语言(重定向+模拟)

    1076: 汇编语言 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 34  Solved: 4 [Submit][Status][Web Board] ...

  4. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 G 旋转矩阵 【模拟】

    链接:https://www.nowcoder.com/acm/contest/90/G 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  5. ACM程序设计选修课——Problem D: (ds:树)合并果子(最优二叉树赫夫曼算法)

    Problem D: (ds:树)合并果子 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 80  Solved: 4 [Submit][Status][ ...

  6. ACM程序设计选修课——1041: XX's easy problem(神烦的多次字符串重定向处理)

    1041: XX's easy problem Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 41  Solved: 7 [Submit][Statu ...

  7. ACM程序设计选修课——Problem E:(ds:图)公路村村通(Prim)

    问题 E: (ds:图)公路村村通 时间限制: 1 Sec  内存限制: 128 MB 提交: 9  解决: 5 题目描述 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本, ...

  8. ACM程序设计选修课——Problem F:(ds:图)旅游规划(优先队列+SPFA)

    问题 F: (ds:图)旅游规划 时间限制: 1 Sec  内存限制: 128 MB 提交: 14  解决: 4 题目描述 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路 ...

  9. ACM程序设计选修课——Problem E:(ds:图)公路村村通(优先队列或sort+克鲁斯卡尔+并查集优化)

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

随机推荐

  1. 弄了一个星期的wp 8.1,吐血的感觉

    看到8.1出来这么久了,心痒难耐,忍不住想重新把应用写一遍,于是上个星期开始动手,用的mvvm模式,结果一路下来,sqlce不能用了,那好吧,我用sqlite,webrequest变成httpclie ...

  2. Python re module (regular expressions)

    regular expressions (RE) 简介 re模块是python中处理正在表达式的一个模块 r"""Support for regular expressi ...

  3. 动态代理--Cglib

    JDK 的Proxy 实现,需要代理对象实现接口: package com.utils; import java.lang.reflect.InvocationHandler; import java ...

  4. 关于SQL语言的初步认识

    关于SQL语言的初步认识 1.一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义. 2.一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项. 3.一个表或者是一 ...

  5. ssh整合思想 Spring与Hibernate的整合ssh整合相关JAR包下载 .MySQLDialect方言解决无法服务器启动自动update创建表问题

    除之前的Spring相关包,还有structs2包外,还需要Hibernate的相关包 首先,Spring整合其他持久化层框架的JAR包 spring-orm-4.2.4.RELEASE.jar  ( ...

  6. Java开发小游戏 用键盘控制精灵在游戏中上下左右跑动 窗体小游戏可打包下载,解压后双击start运行

    package com.swift; import java.awt.Point; import java.awt.event.KeyEvent; import com.rupeng.game.Gam ...

  7. [LUOGU] P2634 [国家集训队]聪聪可可

    点分治裸题,甚至不需要栈回撤. 尝试用容斥写了一波,就是把所有子树混一块计算,最后减去子树内路径条数. #include<iostream> #include<cstring> ...

  8. (74)zabbix第三方认证之http(nginx basic auth)

    HTTP Basic Auth认证方式,我们将在实例中使用nginx来演示,Apache也类似. zabbix认证配置 Administration>> Authentication,将h ...

  9. day12-迭代器

    迭代器的概念 内部含有_next_和_iter_方法的就是迭代器. 可以被for循环的都是可迭代的,只有是可迭代对象,才能用for循环. 可迭代的内部都有_iter_方法——可迭代协议. 只要是迭代器 ...

  10. 一键生成属于自己的QQ历史报告,看看你对自己的QQ了解程度有多深?

    目录 一键生成属于自己的QQ历史报告,看看你对自己的QQ了解程度有多深? 简介 功能截图 如何运行 编写思路 main.py模块 qq_bot模块 tkinter_gui模块 static_data模 ...