1043 幸运号码 数位DP
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1043
设dp[i][j]表示前i位数中,i位数的和为j时的所有情况。
转移的时候和普通的数位dp是一样转移的,但是如果你压缩了空间的话,就是用滚动数组的话,记录情况数就要多开一个变量来保存,
然后看看怎么排除前导0的情况。
如果产生的和值是j,然后前i - 1位产生的和值也是j,那么第i为就是前导0了。需要排除。
然后前n部分的和值的所有情况(需要排除前导0) * 后n部分的和值情况。就是答案。
#include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <algorithm> #include <assert.h> #define IOS ios::sync_with_stdio(false) using namespace std; #define inf (0x3f3f3f3f) typedef long long int LL;#include <iostream> #include <sstream> #include <vector> #include <set> #include <map> #include <queue> #include <string> #include <bitset> const int MOD = 1e9 + 7; LL dp[2][9 * 1000 + 20]; void work() {int n;cin >> n;dp[0][0] = 1;int now = 0;for (int i = 1; i <= n; ++i) {now = !now;for (int k = 0; k <= 9 * i; ++k) {LL sum = 0;for (int j = 0; j <= 9; ++j) {if (k >= j) {sum += dp[!now][k - j];if (sum >= MOD) sum %= MOD;}}dp[now][k] = sum;}}LL ans = 0;for (int i = 1; i <= 9 * n; ++i) { // assert(dp[now][i] - dp[!now][i] >= 0);ans += ((dp[now][i] - dp[!now][i] + MOD) % MOD * dp[now][i]) % MOD;if (ans >= MOD) ans %= MOD;}cout << ans << endl; }int main() { #ifdef localfreopen("data.txt", "r", stdin); // freopen("data.txt", "w", stdout); #endifwork();return 0; }
View Code
转载于:https://www.cnblogs.com/liuweimingcprogram/p/6323673.html
1043 幸运号码 数位DP相关推荐
- 1043 幸运号码 数位dp
1043 幸运号码 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 1个长度为2N的数,如果左边N个数的和 = 右边N个数的和,那么就是一个幸运号码 ...
- 51Nod 1043 幸运号码
1 #include <stdio.h> 2 #include <algorithm> 3 using namespace std; 4 5 typedef long long ...
- 数位dp 的简单入门
时间紧张,就不讲那么详细了. 之前一直被深搜代码误解,以为数位dp 其实就是记忆化深搜...(虽说爆搜确实很舒服而且还好想) 但是后来发现数位dp 的标准格式其实是 预处理 + dp ...... 数 ...
- hdu2089 不要62 数位dp
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- Hdu 2089-不要62 数位dp
题目: http://acm.hdu.edu.cn/showproblem.php?pid=2089 不要62 Time Limit: 1000/1000 MS (Java/Others) Me ...
- 数位 DP 入门 (不要 62+windy 数)
\[I\] 平常的做法是设 \(f_{i,j}\) 为 \(0\)~\(j \times 10^{i-1}\) 的合法个数,这里用某种神奇而快速的做法. 简化题意: 不要 \(6\ 2\) 连在一起的 ...
- [SOCI2005]最大子矩阵(DP) + [JXOI2018]守卫(DP) + [CQOI2016]手机号码(数位DP)[各种DP专练]
DP专练博客 DP专练 T1:最大子矩阵 题目 题解 代码实现 T2:守卫 题目 题解 代码实现 T3:手机号码 题目 题解 代码实现 T1:最大子矩阵 题目 这里有一个n*m的矩阵,请你选出其中k个 ...
- 【HDU3530】 [Sdoi2014]数数 (AC自动机+数位DP)
3530: [Sdoi2014]数数 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 682 Solved: 364 Description 我们称 ...
- 【bzoj3530】[Sdoi2014]数数 AC自动机+数位dp
题目描述 我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串.例如当S=(22,333,0233)时,233是幸运数,2333.20233.3223不是幸运 ...
最新文章
- 最短路专题(不完整)
- Spring AOP通知实例 – Advice
- 【推导】【数学期望】Gym - 101237D - Short Enough Task
- sort and uniq
- vba cad 获取宏的路径_VBA批量创建文件目录及链接,建议收藏备用
- 树莓派第一次开机自动连接WIFI(不用显示屏方法)
- 给VS2008中c#代码自动添加版权信息
- 3.性能之巅 洞悉系统、企业与云计算 --- 操作系统
- linux分布式文件部署,Linux的企业-分布式文件系统mfs(moosefs)搭建与配置
- jsPDF介绍与兼容IE的补丁
- 领英开源企业级数据挖掘软件:WhereHows
- ubuntu开机后nvidia驱动突然消失,nvidia显卡驱动卸载与安装
- 003java面试笔记——【java基础篇】从团八百失败面试总结的java面试题(未完待续)
- Tik Tok跨境电商与传统跨境电商有什么区别?
- java爬移动端搜索引擎_尝试java开发搜索引擎爬虫
- 一.二.管理和信息化软件的关系
- 联想计算机电源风扇怎样清理,电脑风扇怎么拆开清洗_电脑风扇的三根线的作用...
- textblob 情感分析_使用TextBlob进行远程学习的推文中的情感分析
- 高分二号多光谱GEOTIFF影像批量转换为JPG图片
- php神策数据统计,神策数据上报操作(示例代码)
热门文章
- 利用for循环打印出不同的三角形
- Command line is too long. Shorten command line for Doc.generateAsciiDocs or
- iPhone黑屏幕转圈圈(解决办法)
- 已知一个点的经纬度、方位角、距离,求另一点经纬度
- SpringBoot集成WebSocket案例:服务端与客户端消息互通
- Android开发笔记(一百二十五)自定义视频播放器
- mysql linux root密码忘记了怎么办,linux下忘记mysql的root密码解决办法 | 严佳冬
- 综合网上解决mysql 5.7保存emoji 失败问题
- c统计查找的字符串个数
- 一次mongoengine查询速度慢的优化