题目链接:

  570 E. Pig and Palindromes

题目描述:

  有一个n*m的矩阵,每个小格子里面都有一个字母。Peppa the Pig想要从(1,1)到(n, m)。因为Peppa the Pig是一个完美主义者,她想要她所经过的路径上的字母组成的字符串是一个回文串,现在Peppa the Pig想要知道有多少满足条件的走法?

解题思路:

  因为经过路径上的字母要组成回文串,所以可以从(1,1),(n,m)同时开始dp。从(1,1)出发只能向下方和右方走,从(n,m)出发只能向上方和左方走。然后就可以dp[x1][y1][x2][y2],其实呢可以把dp数组优化到三维dp[step][x1][x2]。因为从两点出发走过的步数是一样的,知道了走过的步数和一个方向的坐标,就可以求出另一个方向的坐标咯。但是酱紫搞的话,还是会MTL的(亲身经历>_<)······,但是请我们尊贵的滚动数组出场就一切ok咯。

 #include <bits/stdc++.h>
using namespace std; const int maxn = ;
const int mod = ;
int dp[][maxn][maxn], n ,m;
char maps[maxn][maxn]; int main ()
{
while (scanf ("%d %d", &n, &m) != EOF)
{
for (int i=; i<=n; i++)
scanf ("%s", maps[i]+); if (maps[][] != maps[n][m])
{
printf ("0\n");
continue;
} memset (dp, , sizeof(dp));
dp[][][n] = ;
int res = (n + m - ) / ; for (int i=; i<=res; i++)
{
for (int j=; j<=i+; j++)
for (int k=n; k>=n-i; k--)
{
int x1, x2, y1, y2;
x1 = j, y1 = i - j + ;
x2 = k, y2 = n + m - k - i; if (maps[x1][y1] == maps[x2][y2])
{
if (x1>x2 || y1>y2)
continue;
dp[i%][j][k] = (dp[i%][j][k] + dp[(i%)^][j-][k])%mod;
dp[i%][j][k] = (dp[i%][j][k] + dp[(i%)^][j-][k+])%mod;
dp[i%][j][k] = (dp[i%][j][k] + dp[(i%)^][j][k])%mod;
dp[i%][j][k] = (dp[i%][j][k] + dp[(i%)^][j][k+])%mod;
} }
memset(dp[(i%)^], , sizeof(dp[(i%)^]));
} int ans = ;
if ((n+m)% == )
{
for (int i=; i<=n; i++)
ans = (ans + dp[res%][i][i]) % mod;
}
else
for (int i=; i<=n; i++)
{
int x = res - i + ;
if (x + <= m)
ans = (ans + dp[res%][i][i]) % mod;
if (i + <= n)
ans = (ans + dp[res%][i][i+]) % mod;
}
printf ("%d\n", ans); }
return ;
}

最新文章

  1. 《Entity Framework 6 Recipes》中文翻译系列 (6) -----第二章 实体数据建模基础之使用Code First建模自引用关系
  2. @RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderAction的作用和区别
  3. 我常用的VS技巧
  4. Shell入门教程:流程控制(1)命令的结束状态
  5. SE Homework 1 —An Error Impressed Me
  6. 031医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------sql补充知识
  7. 360demo--关于WM_GETMINMAXINFO
  8. SQL同列合并
  9. 【翻译】KNACK制作介绍
  10. mysqldump使用方法(MySQL数据库的备份与恢复)
  11. Object-C: 枚举
  12. 【原创】System.Data.SQLite内存数据库模式
  13. 向上管理(manage up)的的五条原则
  14. jQuery 简介,与js的对比
  15. 【翻译】Ext JS 6早期访问版本发布
  16. [Swift]LeetCode894. 所有可能的满二叉树 | All Possible Full Binary Trees
  17. mysql join on and
  18. DEV_TreeList使用经验小结
  19. contenOs7
  20. 【XSY2808】董先生的休闲方案 组合数学

热门文章

  1. lemon oa前端页面——由user-base-list谈项目组织
  2. HTML大文件上传(博客迁移)
  3. Android中的图片查看器
  4. Zookeeper 3.4 官方文档翻译
  5. wpf 导出Excel Wpf Button 样式 wpf简单进度条 List泛型集合对象排序 C#集合
  6. 使用RNN解决句子对匹配问题的常见网络结构
  7. Android之键盘监听的执行机理【看清键盘监听的本质】【入门版】
  8. Hackrank Kingdom Division 树形DP
  9. 关于maven pom
  10. high-level operations on files and collections of files