题目链接:

hdu: http://acm.hdu.edu.cn/showproblem.php?pid=5617

bc(中文): http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=666&pid=1003

题解:

设dp[x1][x2][i]表示第i步时,从(1,1)点走到了(x1,y1),(n,n)点走到了(x2,y2)点的合法的总数。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 using namespace std;
 5
 6 const int maxn = 505;
 7 const int mod = 5201314;
 8
 9 int dp[maxn][maxn][2];
10 char str[maxn][maxn];
11
12 int n;
13
14 void init() {
15     memset(dp, 0, sizeof(dp));
16 }
17
18 inline int add(int x, int y) {
19     x += y;
20     if (x > mod) x -= mod;
21     return x;
22 }
23
24 int main() {
25     int tc;
26     scanf("%d", &tc);
27     while (tc--) {
28         init();
29         scanf("%d", &n);
30         for (int i = 1; i <= n; i++) scanf("%s", str[i] + 1);
31         if (str[1][1] == str[n][n]) dp[1][n][0] = 1;
32         //printf("dp[1][n][0]:%d\n", dp[1][n][0]);
33         int u = 1;
34         for (int i = 2; i <= n; i++) {
35             for (int j = 1; j <= i; j++) {
36                 for (int k = 1; k <= i; k++) {
37                     int x1, y1, x2, y2;
38                     x1 = j; y1 = i + 1 - x1;
39                     x2 = n + 1 - k; y2 = 2 * n - i + 1 - x2;
40
41                     //滚动数组非常需要注意的地方就是!!!每次都要初始化!!!初始化!!!初始化!!!
42                     dp[x1][x2][u] = 0;
43
44                     //if (i == n&&x1 != x2) continue;
45
46                     if (str[x1][y1] == str[x2][y2]) {
47                         //printf("fuck!");
48                         int &cur = dp[x1][x2][u];
49                         cur = add(cur, dp[x1][x2][!u]);
50                         cur = add(cur, dp[x1][x2 + 1][!u]);
51                         cur = add(cur, dp[x1 - 1][x2][!u]);
52                         cur = add(cur, dp[x1- 1][x2 + 1][!u]);
53                     }
54                 }
55             }
56             u = !u;
57         }
58         int ans = 0;
59         for (int i = 1; i <= n; i++) ans = add(ans, dp[i][i][!u]);
60         printf("%d\n", ans);
61     }
62     return 0;
63 }

转载于:https://www.cnblogs.com/fenice/p/5444943.html

HDU 5617 Jam's maze dp+滚动数组相关推荐

  1. hdu 5617 Jam's maze(双线程dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5617 官方题解: #include<iostream> #include<cstdi ...

  2. HDU 1176 免费馅饼 矩阵取数, dp + 滚动数组

    http://acm.hdu.edu.cn/showproblem.php?pid=1176 首先可以处理出整张地图的状态. book[T][POS]表示第T秒,在第pos个地方有多少个馅饼. dp[ ...

  3. HDU - 6578 Blank DP + 滚动数组

    HDU - 6578 Blank 题意 给你\(\{0,1,2, 3\}\)四个数,分别填入长度为\(n\)的数列中,有\(m\)个限制条件,\(l_{i}, r_{i}, x_{i}\)表示在\([ ...

  4. Top Secret Task(dp+滚动数组)

    传送门: 题目 dp[i][j][k] 表示 考虑到第i个数 计算前j个数的和 进行了k次操作 则有 若不把第i个数放入前j个数中 dp[i][j][k] = dp[i-1][j][k] 若把第i个数 ...

  5. 【NOIP2015提高组】子串 区间DP+滚动数组优化

    题意: 有两个仅包含小写英文字母的字符串 A 和 B. 现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一个新的字符串. 请问 ...

  6. [QLU Regular Contest 003] G.Youmu with greedy money problem //dp+滚动数组

    题目链接 题意: 给一个初始纯度值 m m m,一共度过 n n n天,给出序列 a [ i ] a[i] a[i]和 b [ i ] b[i] b[i],第 i i i天可以执行下列操作方案之一: ...

  7. 【bzoj 1806/CS 1801】矿工配餐 IOI2007(五维DP+滚动数组)

    楼下是传送门: http://www.lydsy.com/JudgeOnline/problem.php?id=1806 Description 现有两个煤矿,每个煤矿都雇用一组矿工.采煤工作很辛苦, ...

  8. 牛客小白月赛58 B(暴力)C(思维)D(dp滚动数组优化)

    牛客小白月赛58 感觉没什么意思,这场月赛出题人有点问题. B 题意:给定一定的数据填充顺序和每一个填充层的名称,只有填充满了上一层才可以填充下一层. 但是每一层又属于某一个大层,一个大层中包含了若干 ...

  9. 洛谷 P2679 子串 【dp神题】【滚动数组】【2015 noip d2t2】

    偷个懒,题解看这里:https://www.luogu.org/problemnew/solution/P2679 看作者 GuessYCB  写的 ===2018.9.6=== 这一次算理解深一点了 ...

最新文章

  1. 2、RabbitMQ-simplest thing(简单队列)
  2. Java静态代理、动态代理与CGLib代理
  3. Boost:path的测试程序
  4. MySQL日志:binlog、事务日志(redo、undo)
  5. Synchronized 关键字的用法
  6. vue如何获取tree当前选中的节点_vue中element-ui 树形控件-树节点的选择(选中当前节点,获取当前id并且获取其父级id)...
  7. 学习Spring Boot:(三)配置文件
  8. 学习 | Node.js 之定时任务
  9. 阮一峰:WebSocket 教程
  10. Suricata/Snort规则参考
  11. libcef-详细步骤-将cef浏览器嵌入到Win32中作为子窗口运行
  12. 投机之殇——解说史上最大CPU漏洞
  13. TADF的发展史前景概念,热活化延迟荧光(TADF)材料的未来发展
  14. 转:SWOT分析法与职业生涯规划
  15. isEmpty与null的区别
  16. 0x80073712_win101903版本更新错误0x80073712的解决方法 - 系统家园
  17. 齐二TK6916/20/26/32系列数控落地铣镗床简介1
  18. topm java cpu3.3_快讯:TOPM 3-0 XQ,TOPM强势压迫,势如破竹喜获三连胜
  19. 4.3 走出应试的阴影——《逆袭大学》连载
  20. 60个英文阅读网站推荐

热门文章

  1. win7 删除Windows服务的方法
  2. gcc编译选项-Os的用法
  3. Java 结构体之 JavaStruct 使用教程二 JavaStruct 用例分析
  4. React开发(240):dva概念5reducer
  5. React开发(176):导出所有接口供使用
  6. Taro+react开发(10)--多行选择
  7. [css] 要是position跟display、overflow、float这些特性相互叠加后会怎么样?
  8. [css] 写出div在不固定高度的情况下水平垂直居中的方法?
  9. [css] 请问触发hasLayout的后果是什么?
  10. 工作286:v-model没有值会报错