#Lutece2651. 不能回头的路
不能回头的路
Migrated from Lutece 2651 不能回头的路
All parts of this problem, including description, images, samples, data and checker, might be broken. If you find bugs in this problem, please contact the admins.
Description
岸边露伴和康一两人走入一个地图上没显示的小巷子,巷子里有几个没标注的废弃屋子。正奇怪中,两人在小巷子里绕了半天都走不出去。这时候一个漂亮的菇凉出现了,表示要带他们出去,警惕的岸边露伴直接发动天堂之门。无良的岸边露伴翻阅着这个菇凉的记忆,名为杉木玲美,是普通人非替身使者,没有男友,三围 82、57、84,还有......停停停,康一看不过去了,瞎看别人隐私,阻止了岸边露伴继续读记忆。聊天中少女和他们讲了一个故事,15 年前这里发生过凶杀案,剧情很恐怖。听上去又不像真的,但岸边露伴突然看见一只脖子割裂的狗,便有所怀疑。原来这个菇凉和狗都是幽灵,也就是所谓的地缚灵,执念很深,迟迟不肯去往另一个世界。更让人恐惧的是这个杀人狂魔还没有落网,还在继续作案,隐藏在杜王町的角落。因为这个菇凉总是能看到同样的受害者的灵魂从上方飘过,她想告诉别人这个事情,追寻真相,找到凶手,以慰受害者在天之灵。岸边露伴和康一答应了她要去调查这件事情,之后玲美带他们离开这里。但是这条出去的路绝对不能回头,否则的话灵魂会被阴间的鬼魂拉到另一个世界里。在要出去的瞬间康一回头了,但是被岸边露伴救了回来,冲了出去。后来,岸边露伴找到了这个菇凉的墓地,路过的一个老人也知道当年那个事情,告诉了他真相。岸边露伴那时候就住在隔壁,事发当天刚好住在了玲美家中,也是这场案件的唯一幸存者,得救后的岸边露伴一直在喊是铃美救了自己。
(转载自作者:漫语漫念)
下面我们将科学地讨论为什么小巷子区域绕不出去。巷子的地理结构相当于由 行 列相互的垂直街道构成。第 条横向街道和第 条纵向街道的交叉路口有一个特征值 ,特征值相同的交叉路口外观上相同,特征值不同的交叉路口从外观上可以区分。为了让岸边露伴感觉自己在原地踏步,阴间的鬼魂将对一条横向道路上的所有交叉路口进行重新排列,从而获得一些从左到右、从上到下看上去特殊的交叉路口排列。
具体地说,定义鬼打墙区域为巷子的子区域。子区域是由原区域中选取一些连续的横向街道和连续的列向街道的公共部分构成的。鬼打墙区域满足阴间的鬼魂可以选取该区域中的一些横向街道(可以不选或全选),并对这些横向街道中的每一条横向街道的交叉路口进行重新排序(可以不重新排序),使得某个人不管经过重新排列后的子区域的任何一条横向或纵向街道的过程中都会感觉到自己后半部分经过的交叉路口和前半部分经过的交叉路口顺序正好相反。
阴间的鬼魂希望掌握所有鬼打墙区域的位置以便于更好的抓人去阴间。但是它发现鬼打墙区域很难找齐,所以它来向你请教:给定的一个巷子区域中总共有多少鬼打墙区域?
Input
第一行输入两个整数 ,分别表示巷子的行数和列数。 下面 行每行给出长度为 的由小写字符构成的字符串 。
Output
输出一个正整数,表示鬼打墙区域的数量。
Samples
2 2
aa
aa
9
1 5
abbca
9
Constraints
是小写字符
Note
样例一中,所有 的子区域都是鬼打墙区域。
样例二中,所有 的子区域,$\texttt{abb},\texttt{bb},\texttt{bbc},\texttt{abbca}$ 是鬼打墙区域。
Resources
2021 UESTC ICPC Training for String and Search Algorithm