hdu 3652数位dp
/*
数位dp
题意:找到1-n之间包括13这个子串而且可以整除13的数
解:刚開始dp[N][N][2]这里的2用来记录是否为13表示当前位是否为13,我把上一位为1当前位为13和上一位部位1
这样的情况在数组中没有记录。
*/
#include<stdio.h>
#include<string.h>
#define N 14
int dp[N][N][3];
int digit[N];
int dfs(int len,int mod,int cnt,int ok) {
if(!len) {
if(mod==0&&cnt==2)return 1;
return 0;
}
if(!ok&&dp[len][mod][cnt]!=-1)
return dp[len][mod][cnt];
int ans=0,i,maxx=ok? digit[len]:9;
for(i=0;i<=maxx;i++) {
if(cnt==2||(cnt==1&&i==3))
ans+=dfs(len-1,(mod*10+i)%13,2,ok&&i==maxx);
else
if(i==1)//刚開始这里推断条件写成if(cnt==0&&i==1)这样是不正确的由于漏掉了一种情况(i==1&&cnt==1)
ans+=dfs(len-1,(mod*10+i)%13,1,ok&&i==maxx);
else
ans+=dfs(len-1,(mod*10+i)%13,0,ok&&i==maxx);
}
if(!ok)
dp[len][mod][cnt]=ans;
return ans;
}
int f(int n) {
int len=0;
while(n) {
digit[++len]=n%10;
n/=10;
}
return dfs(len,0,0,1);
}
int main() {
int n;
memset(dp,-1,sizeof(dp));
while(scanf("%d",&n)!=EOF) {
printf("%d\n",f(n));
}
return 0;}
<pre name="code" class="cpp">/*
我原来的思路,刚開始写的时候少开了一维记录pre的情况
*/
#include<stdio.h>
#include<string.h>
#define N 14
int dp[N][N][2][2];
int digit[N];
int dfs(int len,int mod,int pre,int cnt,int ok) {
if(!len) {
if(mod==0&&cnt==1)return 1;
return 0;
}
if(!ok&&dp[len][mod][pre][cnt]!=-1)
return dp[len][mod][pre][cnt];
int ans=0,i,maxx=ok? digit[len]:9;
for(i=0;i<=maxx;i++) {
if(cnt||(pre&&i==3))
ans+=dfs(len-1,(mod*10+i)%13,i==1,1,ok&&i==maxx);
else
ans+=dfs(len-1,(mod*10+i)%13,i==1,0,ok&&i==maxx);
}
if(!ok)
dp[len][mod][pre][cnt]=ans;
return ans;
}
int f(int n) {
int len=0;
while(n) {
digit[++len]=n%10;
n/=10;
}
return dfs(len,0,0,0,1);
}
int main() {
int n;
memset(dp,-1,sizeof(dp));
while(scanf("%d",&n)!=EOF) {
printf("%d\n",f(n));
}
return 0;}
hdu 3652数位dp的更多相关文章
- HDU 3652(数位DP)
题目链接:B-number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- [hdu 3652]数位dp解决数的倍数问题
原以为很好的理解了数位dp,结果遇到一个新的问题还是不会分析,真的是要多积累啊. 解决13的倍数,可以根据当前余数来推,所以把当前余数记为一个状态就可以了. #include<bits/stdc ...
- HDU - 3652 数位DP 套路题
题意:统计能被13整除和含有13的数的个数 解法没法好说的..学了前面两道直接啪出来了 PS.HDU深夜日常维护,没法交题,拿网上的代码随便对拍一下,输出一致 #include<bits/std ...
- hdu 4507 数位dp(求和,求平方和)
http://acm.hdu.edu.cn/showproblem.php?pid=4507 Problem Description 单身! 依旧单身! 吉哥依旧单身! DS级码农吉哥依旧单身! 所以 ...
- hdu 4352 数位dp + 状态压缩
XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 2017中国大学生程序设计竞赛 - 网络选拔赛 HDU 6156 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6156 题意:如题. 解法:数位DP,暴力枚举进制之后,就转化成了求L,R区间的回文数的个数,这个直接做 ...
- hdu:2089 ( 数位dp入门+模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 数位dp的模板题,统计一个区间内不含62的数字个数和不含4的数字个数,直接拿数位dp的板子敲就行 ...
- HDU 4352 XHXJ's LIS HDU(数位DP)
HDU 4352 XHXJ's LIS HDU 题目大意 给你L到R区间,和一个数字K,然后让你求L到R区间之内满足最长上升子序列长度为K的数字有多少个 solution 简洁明了的题意总是让人无从下 ...
- hdu 3709 数位dp
数位dp,有了进一步的了解,模板也可以优化一下了 题意:找出区间内平衡数的个数,所谓的平衡数,就是以这个数字的某一位为支点,另外两边的数字大小乘以力矩之和相等,即为平衡数例如4139,以3为支点4*2 ...
随机推荐
- Navicat查看MySQL日志
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable ...
- Dedecms会员中心注入漏洞
详细说明: member/buy_action.php require_once(dirname(__FILE__)."/config.php"); CheckRank(0 ...
- 流畅的python第三章字典和集合学习记录
什么是可散列的数据类型 如果一个对象是可散列的,那么在这个对象的生命周期中,他的散列值是不变的,而且这个对象需要实现__hash__()方法.另外可散列对象还要有__qe__()方法.这样才能跟其他键 ...
- tag subshader shaderlab
unity的黑科技 https://docs.unity3d.com/Manual/SL-SubShaderTags.html 这里 reflectCamera.RenderWithShader(re ...
- 更改"xxxx" 的权限: 不允许的操作
[摘要:做为root用户,用chmod为何改没有了文件权限 以ROOT用户上岸,当用chmod改文件权限时,体系表现无权变动,为何 文件名是:aa chmod 777 aa chmod: changi ...
- Cocos2d-x3.0游戏实例之《别救我》第七篇——物理世界的碰撞检測
事实上我也非常吃惊-居然写到第七篇了,我估计也就是四篇的内容,感觉非常奇妙,我也不会非常唠叨什么吖); // 0001 ); // 0001 ); // 0001 这样我们才干监听到它们的碰 ...
- 《深入理解Java虚拟机》笔记5
Java虚拟机可以执行的语言并不是只有Java语言,比如jython也可以 运行在Java虚拟机上.不明白字节码之前觉得挺疑惑,为什么和Java 完全不同语法的程序语言也可以运行在虚拟机上呢? 不得不 ...
- jenkins+testNG
1.项目的pom.xml要配置插件,同时指定testng.xml文件的位置.就被这个卡了好久 <properties> <maven-surefire-plugin.version& ...
- Node.js m03122图片批量下载爬虫1.00
//====================================================== // m03122图片批量下载爬虫1.00 // 2017年11月18日 //==== ...
- 基于SpringBoot的Environment源码理解实现分散配置
前提 org.springframework.core.env.Environment是当前应用运行环境的公开接口,主要包括应用程序运行环境的两个关键方面:配置文件(profiles)和属性.Envi ...