【Hdu3652】B-number(数位DP)
Description
题目大意:求小于n是13的倍数且含有'13'的数的个数。
(1 <= n <= 1000000000)
Solution
数位DP,题目需要包含13,且被13整除,所以状态应该多2个,
\(F[i][j][k]\)表示位数为i,余数为j,包含13状态为k的方案数
其中k(0,1,2),2表示已经包含13,1表示上一个为1,否则为0
记忆化打法
Tips:
- 数组k维要开到3
- DP数组只算一次,只需开始初始化一次
- 计算转移的k时的顺序
Code
#include <cstdio>
#include <cstring>
int n,d[15],f[15][15][3];
int dfs(int p,int mo,int exi,int lim){
int &tmp=f[p][mo][exi],r=0;
if(!p) return exi==2&&!mo;
if(!lim&&tmp!=-1) return tmp;
int mx=lim?d[p]:9;
for(int i=0;i<=mx;++i){
int t=0;
if(exi==2) t=2;//必须先判,否则错解
else if(exi==1&&i==3) t=2;
else if(i==1) t=1;
r+=dfs(p-1,(mo*10+i)%13,t,lim&&(i==mx));
}
return lim?r:tmp=r;
}
int main(){
memset(f,-1,sizeof(f));
while(~scanf("%d",&n)){
int len=0;
while(n){
d[++len]=n%10;
n/=10;
}
printf("%d\n",dfs(len,0,0,1));
}
return 0;
}
【Hdu3652】B-number(数位DP)的更多相关文章
- 多校5 HDU5787 K-wolf Number 数位DP
// 多校5 HDU5787 K-wolf Number 数位DP // dp[pos][a][b][c][d][f] 当前在pos,前四个数分别是a b c d // f 用作标记,当现在枚举的数小 ...
- hdu 5898 odd-even number 数位DP
传送门:hdu 5898 odd-even number 思路:数位DP,套着数位DP的模板搞一发就可以了不过要注意前导0的处理,dp[pos][pre][status][ze] pos:当前处理的位 ...
- codeforces Hill Number 数位dp
http://www.codeforces.com/gym/100827/attachments Hill Number Time Limits: 5000 MS Memory Limits: ...
- HDU 5787 K-wolf Number 数位DP
K-wolf Number Problem Description Alice thinks an integer x is a K-wolf number, if every K adjacen ...
- Fzu2109 Mountain Number 数位dp
Accept: 189 Submit: 461Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description One ...
- HDU 3709 Balanced Number (数位DP)
Balanced Number Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
- beautiful number 数位DP codeforces 55D
题目链接: http://codeforces.com/problemset/problem/55/D 数位DP 题目描述: 一个数能被它每位上的数字整除(0除外),那么它就是beautiful nu ...
- FZU - 2109 Mountain Number 数位dp
Mountain Number One integer number x is called "Mountain Number" if: (1) x>0 and x is a ...
- BNU 13024 . Fi Binary Number 数位dp/fibonacci数列
B. Fi Binary Number A Fi-binary number is a number that contains only 0 and 1. It does not conta ...
- hdu 5898 odd-even number(数位dp)
Problem Description For a number,if the length of continuous odd digits is even and the length of co ...
随机推荐
- 混合app
cordova run android 把应用发送到手机 ionic serve 电脑浏览器调试命令 创建: cordova create hello co ...
- Sping IOC 理解(转)
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
- Mongoose之 SchemaTypes 数据类型
SchemaTypes 数据类型 SchemaTypes handle definition of path defaults, validation, getters, setters, field ...
- shiro实现无状态的会话,带源码分析
转载请在页首明显处注明作者与出处 朱小杰 http://www.cnblogs.com/zhuxiaojie/p/7809767.html 一:说明 在网上都找不到相关的信息,还是翻了大半天 ...
- robotframework自动化系列:新增流程
刚接手项目的时候,要求所有流程在上线之前必须确保正向操作是正确的:这个时候又有新的模块需要测试,所以引入自动化测试是非常有必要的!通过对比,尝试使用RF进行自动化的回归测试. 测试中最常见的操作就是增 ...
- Erlang Concurrent 并发进阶
写在前面的话 本文来源于官方教程 Erlang -- Concurrent Programming.虽然没有逻辑上的关系,但建议在掌握了Erlang入门系列教程的一些前置知识后继续阅读. 之前我是逐小 ...
- 【MFC】基于OpenCV的魔镜
最近半个月事情太多了,参加了泰迪杯数据挖掘,参加学院的科技节,科技节里面总共我参加了数学建模.PS.软件设计制作.电子设计大赛这4个.还有期中考.英语论文作业.今天终于忙的差不多,有时间来总结一下前段 ...
- js同时使用多个分隔符分割字符串.
利用正则分割,str.split(/reg/);如果有这样一个字符串: "jb51.net,google.com,baidu.com_weibo.com_haotu.net", 我 ...
- C#获取指定月指定周的日期范围
); MessageBox.Show(end.ToShortDateString());
- VS2015如何连接mySQL数据库图文
1.新建一个工程名叫mysql,编程环境选择c#,然后选择windows窗体应用程序,新建一个窗体用于显示查询到sql数据库的数据集 2.从工具箱向form1窗体上拖一个按钮和datagridview ...