1503 猪和回文

一只猪走进了一个森林。很凑巧的是,这个森林的形状是长方形的,有n行,m列组成。我们把这个长方形的行从上到下标记为1到n,列从左到右标记为1到m。处于第r行第c列的格子用(r,c)表示。

刚开始的时候猪站在(1,1),他的目标是走到(n,m)。由于猪回家心切,他在(r,c)的时候,只会往(r+1,c)或(r,c+1)走。他不能走出这个森林。

这只猪所在的森林是一个非同寻常的森林。有一些格子看起来非常相似,而有一些相差非常巨大。猪在行走的过程中喜欢拍下他经过的每一个格子的照片。一条路径被认为是漂亮的当且仅当拍下来的照片序列顺着看和反着看是一样的。也就是说,猪经过的路径要构成一个回文。

数一数从(1,1)到(n,m)有多少条漂亮路径。答案可能非常巨大,请输出对 109+7 取余后的结果。

样例解释:有三种可能

  

Input
单组测试数据。
第一行有两个整数 n,m (1≤n,m≤500),表示森林的长和宽。
接下来有n行,每行有m个小写字母,表示每一个格子的类型。同一种类型用同一个字母表示,不同的类型用不同的字母表示。
Output
输出答案占一行。
Input示例
3 4
aaab
baaa
abba
Output示例
3

这就是道Dp题 和之前1的传纸条有点像 但这个是一个从(1,1)出发 一个从(n,m)出发f【i】【j】【k】表示一个点到(i,j)另一个到(k,l) l可以从另外三个数推出来 因为两个点所走的路程一定一样

#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
using namespace std;
const int mod=1e9+7;
const int M=507;
int read(){int ans=0,f=1,c=getchar();while(c<'0'||c>'9'){if(c=='-') f=-1; c=getchar();}while(c>='0'&&c<='9'){ans=ans*10+(c-'0'); c=getchar();}return ans*f;
}
char s[M][M];
int f[2][M][M],now=1,last=0;
int h,n,m,ans;
int main()
{n=read(); m=read(); h=(n+m)>>1;for(int i=1;i<=n;i++) scanf("%s",s[i]+1);if(s[1][1]!=s[n][m]){printf("0\n"); return 0;}f[1][1][n]=1;for(int i=1;i<=n;i++){for(int j=1;j<=(h-i+1);j++){for(int k=n;k>=max(1,n-i-j+2);k--){int l=n+m-i-j-k+2;if(s[i][j]!=s[k][l]) continue;(f[now][j][k]+=f[last][j][k])%=mod;(f[now][j][k]+=f[last][j][k+1])%=mod;(f[now][j][k]+=f[now][j-1][k+1])%=mod;(f[now][j][k]+=f[now][j-1][k])%=mod;if((i==k&&j==l)||(i==k&&j+1==l)||(i+1==k&&j==l)) (ans+=f[now][j][k])%=mod;}}memset(f[last],0,sizeof(f[last]));swap(last,now);    }printf("%d\n",ans);return 0;
}

View Code

 

转载于:https://www.cnblogs.com/lyzuikeai/p/7264770.html

codeforce 570 problem E 51Nod-1503-猪和回文相关推荐

  1. 51nod1503 猪和回文

    原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1503 思路:因为要求路径回文,所以可以考虑同时从起点和终点出 ...

  2. UVAlive 7041 The Problem to Slow Down You(回文树)

    题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...

  3. 【51NOD - 1523】 非回文(dfs)

    题干: 一个字符串是非回文的,当且仅当,他只由前p个小写字母构成,而且他不包含长度大于等于2的回文子串. 给出长度为n的非回文串s.请找出字典序比s大的,而且字典序要最小的长度为n的非回文. Inpu ...

  4. Problem C: 判断字符串是否为回文

    #include <stdio.h> #include <stdlib.h> int main() { int i,j,n; char str[10]; gets(str); ...

  5. 51NOD 1088 最长回文子串1089 最长回文子串 V2(Manacher算法)

    回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串. 输入一个字符串Str,输出Str里最长回文子串的长度. Input 输入Str(Str的长度 <= 1000(第二题要 ...

  6. 2014-2015 ACM-ICPC, Asia Xian Regional Contest G The Problem to Slow Down You 回文树

    The Problem to Slow Down You Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjud ...

  7. 51Nod 1092 回文字符串(LCS + dp)

    51Nod 1092 数据结构暑假作业上出现的一题,学习了一下相关算法之后,找到了oj测试能AC. 1.回文串是一种中心对称的结构,这道题可以转变为求最长回文子序列长度的题目.(子序列:可以不连续) ...

  8. 2018 ICPC 南京 M. Mediocre String Problem(ExKMP + Manacher / ExKMP+回文树)

    2018 ICPC 南京 全文见:https://blog.csdn.net/qq_43461168/article/details/112796538 M. Mediocre String Prob ...

  9. Mediocre String Problem (2018南京M,回文+LCP 3×3=9种做法 %%%千年好题 感谢Grunt大佬的细心讲解)...

    layout: post title: Mediocre String Problem (2018南京M,回文+LCP 3×3=9种做法 %%%千年好题 感谢"Grunt"大佬的细 ...

最新文章

  1. python括号配对问题_使用Python的栈实现括号匹配算法
  2. spacy库的安装与使用_PythonEEG工具库MNEPython详细安装与使用
  3. linux服务器ftp上传文件为空,Linux 服务器 ftp上传文件出现的问题
  4. PAT甲级1141 PAT Ranking of Institutions :[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数、排名
  5. 简单扩展shiro 实现NOT、AND、OR权限验证(支持复杂一点的表达式)
  6. 借助 CORS 从 JavaScript 使用 API 应用
  7. 算法设计与分析——贪心算法——最优装载问题
  8. Zookeeper启动和Leader选举机制
  9. 正则表达式验证首尾是空格的字符串
  10. 一个不会言谈的程序猿,惊奇发现自己能力的多么的优秀
  11. Hosting WCF in SharePoint 2007 (Part 1) 基本部署(转)
  12. 请启动windows零配置(wzc)服务
  13. 某天的零点时刻0:0:0 和截至时刻23:59:59
  14. 牛客练习赛63 B 牛牛的鱼缸
  15. hive 修改cluster by算法_疯狂Hive之DML操作(四)
  16. (已解决)ubuntu16.04 Nvidia驱动安装成功却无法检测到外接显示器
  17. Python基础之告警定义与告警抑制
  18. 文献阅读 ——— Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in NLP
  19. PCL ——最小包围盒(画出了最小包围盒并求出顶点坐标)
  20. 美国顶级在线教育平台泄露22TB数据

热门文章

  1. vue本地项目静态资源管理
  2. 织梦首页常用调用标签
  3. Git 学习笔记 —— 常用命令
  4. python实现scp功能_转python实现ftp,scp的实现
  5. Amphorae 与 Octavia Worker 的安全通信实现
  6. Octavia health-manager 与 amphora 故障修复的实现与分析
  7. Python 进阶_OOP 面向对象编程_实例属性和方法
  8. 开启ubuntu的SSH服务,使用终端远程控制
  9. Head First设计模式之策略模式(Strategy)
  10. 抄2gua一篇文章提醒自己