HDU 5617 Jam's maze dp+滚动数组

题目链接:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418577.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(1908)vue之电商管理系统电商系统之渲染修改用户的表单预先验证

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

MySQL根据某一个或者多个字段查找重复数据

https://blog.csdn.net/qq_35834998/article/details/84847243

HOJ 2678 Stars

题意&#xff1a;N个星星(x,y,z)&#xff0c;星星的等级等于x&#xff0c;y&#xff0c;z都小于等于它的星星数量&#xff0c;问每个等级有多少星星。 思路&#xff1a;最暴力的方法是三维树状数组。但是会超内存。所以我们对其中一维先排好序&#xff0c;然后用二维的做。 代码…

前端学习(1909)vue之电商管理系统电商系统之渲染修改用户的请求

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

Spring使用注解@Transactional事物手动回滚

https://blog.csdn.net/weixin_41141219/article/details/80751258

简单了解static

初学java&#xff0c;面对着这个static修饰符&#xff0c;愣是琢磨了两天时间&#xff0c;还在今天琢磨透了&#xff0c;现在将悟到的东西记录下来&#xff1a;1、static修饰符表示静态修饰符&#xff0c;其所修饰的内容&#xff08;变量、方法、代码块暂时学到这三种&#xff…

前端学习(1910)vue之电商管理系统电商系统之完成用户的修改

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

CodeForces 139C Literature Lesson(模拟)

这个题,读懂了就是水,读不懂就没办法下手,论英语阅读的重要性...只有五种形式,第一种万能型aaaa,是另外3种的特殊情况,第二种克莱里林四行打油诗aabb形式,第三种是交替的abab形式,第四种是封闭的abba形式,第五种就是NO.题目的意思就是给我们四个原串,让我们counting from the e…

Java秒杀系统实战系列~基于Redis的原子操作优化秒杀逻辑

https://blog.csdn.net/u013871100/article/details/99621967

前端学习(1911)vue之电商管理系统电商系统之完成用户的修改弹框询问用户是否删除

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

MybatisPlus提示 Could not set property 'id' of '***' with value

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89390364

超好:web app变革之rem

感谢你的阅读&#xff0c;本文由 腾讯ISUX 版权所有&#xff0c;转载时请注明出处&#xff0c;违者必究&#xff0c;谢谢你的合作。注明出处格式&#xff1a;腾讯ISUX (https://isux.tencent.com/web-app-rem.html) &#xff08;其他阅读&#xff1a;滑屏 H5 开发实践九问http…

前端学习(1912)vue之电商管理系统电商系统之调用api完成删除操作

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue Vue.use(Router)const router new Router({routes: [{path: /,re…

mybatisPlus中的updateById无法更新null值的字段

https://blog.csdn.net/hui_hong_tailang/article/details/96478980

前端学习(1913)vue之电商管理系统电商系统之创建user分支并把代码推到码云

创建新分支 检查状态 添加代码 本地user分支推送 查看 切换 提交

CLR线程概览(一)

托管 vs. 原生线程 托管代码在“托管线程”上执行&#xff0c;&#xff08;托管线程&#xff09;与操作系统提供的原生线程不同。原生线程是在物理机器上执行的原生代码序列&#xff1b;而托管线程则是在CLR虚拟机上执行的虚拟线程。 正如JIT解释器将“虚拟的”中间&#xff08…

goEasy 消息推送

http://www.goeasy.io/cn/demos

css自定义字体

css自定义字体的兼容问题 来源 http://www.w3cplus.com/content/css3-font-face 一、TureTpe(.ttf)格式&#xff1a; .ttf字体是Windows和Mac的最常见的字体&#xff0c;是一种RAW格式&#xff0c;因此他不为网站优化,支持这种字体的浏览器有【IE9,Firefox3.5,Chrome4,Safari3,…

前端学习(1915)vue之电商管理系统电商系统之通过路由展现权限列表

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…