递推DP URAL 1586 Threeprime Numbers
题目传送门
1 /* 2 题意:n位数字,任意连续的三位数字组成的数字是素数,这样的n位数有多少个 3 最优子结构:考虑3位数的数字,可以枚举出来,第4位是和第3位,第2位组成的数字判断是否是素数 4 所以,dp[i][j][k] 表示i位数字,最高位数字j,第二高位数字k 5 状态转移方程:dp[i][j][k] += dp[i-1][k][l] 6 注意:最高位从1开始枚举:) 7 详细解释:http://blog.csdn.net/zhangyanxing666/article/details/9628563 8 */ 9 #include <cstdio> 10 #include <iostream> 11 #include <algorithm> 12 #include <cstring> 13 #include <cmath> 14 using namespace std; 15 16 const int MAXN = 1e4 + 10; 17 const int INF = 0x3f3f3f3f; 18 const int MOD = 1e9 + 9; 19 int prime[11][11][11]; 20 int vis[1010]; 21 int dp[MAXN][11][11]; 22 23 void solve(void) 24 { 25 memset (prime, 0, sizeof (prime)); 26 memset (vis, 0, sizeof (vis)); 27 memset (dp, 0, sizeof (dp)); 28 for (int i=2; i<=1000; ++i) 29 { 30 if (!vis[i]) 31 { 32 vis[i] = true; 33 for (int j=i*2; j<=1000; j+=i) 34 { 35 vis[j] = true; 36 } 37 prime[i/100][i/10%10][i%10] = 1; 38 } 39 } 40 41 for (int i=1; i<=9; ++i) 42 { 43 for (int j=0; j<=9; ++j) 44 { 45 for (int k=0; k<=9; ++k) if (prime[i][j][k]) dp[3][i][j]++; 46 } 47 } 48 49 for (int i=4; i<=10000; ++i) 50 { 51 for (int j=1; j<=9; ++j) 52 { 53 for (int k=0; k<=9; ++k) 54 { 55 for (int l=0; l<=9; ++l) 56 if (prime[j][k][l]) dp[i][j][k] = (dp[i][j][k] + dp[i-1][k][l]) % MOD; 57 } 58 } 59 } 60 } 61 62 int main(void) //URAL 1586 Threeprime Numbers 63 { 64 //freopen ("M.in", "r", stdin); 65 66 solve (); 67 int n; 68 while (scanf ("%d", &n) == 1) 69 { 70 int ans = 0; 71 for (int i=1; i<=9; ++i) 72 { 73 for (int j=0; j<=9; ++j) 74 ans = (ans + dp[n][i][j]) % MOD; 75 } 76 77 printf ("%d\n", ans); 78 } 79 80 return 0; 81 }
转载于:https://www.cnblogs.com/Running-Time/p/4490516.html
递推DP URAL 1586 Threeprime Numbers相关推荐
- 递推DP URAL 1119 Metro
题目传送门 1 /* 2 题意:已知起点(1,1),终点(n,m):从一个点水平或垂直走到相邻的点距离+1,还有k个抄近道的对角线+sqrt (2.0): 3 递推DP:仿照JayYe,处理的很巧妙, ...
- 2019 ICPC Asia Nanjing Regional C.Digital Path(拓扑排序递推DP)
整理的算法模板合集: ACM模板 题目传送门 三段题面,只有第三段是有用的-前两段又长单词又难懂,就是在讲故事...不过针对四种情况给出四个图帮助我们理解题意是真的赞,可能出题人怕我们看不懂吧(第一句 ...
- 解题报告:luogu P2272 [ZJOI2007]最大半连通子图(tarjan缩点、递推DP、hash、set判重)
这时yxc上课时讲解的截图. 一般用到tarjan算法的题目步骤都非常相似: tarjan算法 缩点,建图(这里要判重) 按照拓扑序递推(这里缩点以后逆向就已经是拓扑序了)/ 循环遍历新图求解答案. ...
- hdu1978(递推dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1978 分析: 递推DP. dp[][]表示可以到达改点的方法数. 刚开始: 外循环扫描所有点dp[x] ...
- 递推DP HDOJ 5459 Jesus Is Here
题目传送门 题意:简单来说就是sn = sn-1 + sn-2递推而来,求其中所有c字符的:∑i<j:sn[i..i+2]=sn[j..j+2]=''cff"(j−i) mod 530 ...
- 递推DP UVA 1366 Martian Mining
题目传送门 1 /* 2 题意:抽象一点就是给两个矩阵,重叠的(就是两者选择其一),两种铺路:从右到左和从下到上,中途不能转弯, 3 到达边界后把沿途路上的权值相加求和使最大 4 DP:这是道递推题, ...
- POJ 1661 Help Jimmy(递推DP)
思路: 1. 每个板子有左右两端, dp[i][0], dp[i][1] 分别记录左右端到地面的时间 2. 从下到上递推计算, 上一层的板子必然会落到下面的某一层板子上, 或者地面上 总结: 1. 计 ...
- HDU 5863 cjj's string game ( 16年多校10 G 题、矩阵快速幂优化线性递推DP )
题目链接 题意 : 有种不同的字符,每种字符有无限个,要求用这k种字符构造两个长度为n的字符串a和b,使得a串和b串的最长公共部分长度恰为m,问方案数 分析 : 直觉是DP 不过当时看到 n 很大.但 ...
- [DFS/递推/DP] 2327 [SCOI2005] 扫雷 ( 普及+/提高
Date:2019/10/13 Degree of difficulty:Universal Original question:P2327 [SCOI2005]扫雷 原题与改编 10.13月考[爆零 ...
最新文章
- 分解原理_基于矩阵分解原理的推荐系统
- 新版本找不到tf.contrib的解决方案
- 前端学习(1734):前端系列javascript之添加动画
- C#进阶之WebAPI(二)
- 深入浅出MongoDB(二)概述
- vue2 工具类_h5缓存
- Linux下安装JDK说明
- java使用httpClient解决外部url请求访问
- 2021最新 上海互联网公司排名
- 30岁以后搞Android已经没有前途?复习指南
- 微信支付的时候提示:当前交易异常,暂无法完成支付,请注意合法使用账户,否则将升级限制措施!
- sonique的插件Dee2
- 按键精灵sub子程序篇
- 图像对齐:Parametric Image Alignment Using Enhanced Correlation Coefficient Maximization
- 基于php的乐山旅游攻略网站
- oracle的product删除不了,Linux下删除Oracle实例
- 建议Amazon卖家选择轻巧产品的原因
- 12306订票助手.NET
- seo与外链绝密技巧珍藏版分享
- 【ANSYS Workbench】ACT配合Workbench真能替代Mechanical APDL经典命令操作吗?