hdu 3555 数位dp水题 记忆化搜索做法
来源:互联网 发布:带端口的ping 编辑:程序博客网 时间:2024/05/19 14:54
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std ;
const int maxn = 20;
__int64 dp[maxn][3] ;//dp[i][flag] ,flag = 2,表示已经有49,flag == 1,表示没有49,这一位是4,
int bit[maxn] ; //flag == 0, 什么都没有
__int64 dfs(int pos , int flag , int lim)
{
if(pos == 0)
return (flag == 2);
if(!lim && dp[pos][flag] != -1)return dp[pos][flag] ;
int num = lim ? bit[pos] : 9 ;
__int64 ans = 0;
for(int i = 0; i <= num ;i++)
{
int flag_x = flag ;
if(flag == 1 && i == 9)
flag_x = 2;
else if(flag == 0 && i == 4)
flag_x = 1;
else if(flag == 1 && i!=4)
flag_x = 0;
ans+=dfs(pos - 1 , flag_x ,lim && (i==num)) ;
}
if(!lim)dp[pos][flag] = ans;
return ans ;
}
int main()
{
int T ;
scanf("%d" ,&T) ;
while(T--)
{
__int64 n ;
scanf("%I64d" ,&n) ;
__int64 t = n ; int len = 0;
while(t)
{
bit[++len] = t%10 ;
t/=10 ;
}
memset(dp , -1 ,sizeof(dp)) ;
printf("%I64d\n" ,dfs(len , 0 , 1)) ;
}
return 0 ;
}
0 1
- hdu 3555 数位dp水题 记忆化搜索做法
- hdu 5179 数位dp+记忆化搜索
- hdu 5898 数位dp,记忆化搜索
- HDU 3555 Bomb(数位dp&记忆化搜索)
- hdu 3652(数位dp 记忆化搜索方法)
- hdu 3709(数位dp 记忆化搜索)
- hdu 2089 记忆化搜索写法(数位dp)
- hdu 4734数位dp(记忆化搜索)
- HDU 2089 不要62(数位DP·记忆化搜索)
- HDU 3652 B-number(数位DP+记忆化搜索)
- HDU 2089 不要62(数位dp&记忆化搜索)
- HDU 3652 B-number(数位dp&记忆化搜索)
- hdu-3943[数位dp(记忆化搜索)+二分]
- HDU 3652 记忆化搜索加 多维数位dp 模板
- HDU-5576-数位DP(记忆化搜索)
- HDU-3652 B-number(数位DP+记忆化搜索)
- HDU 3652 B-number 数位dp+记忆化搜索
- 【数位DP+记忆化搜索】不要62 HDU
- c++_拷贝构造函数/浅拷贝/深拷贝
- How to set up EPEL repository on CentOS
- 【vb.net机房收费系统】之没有包含要从继承的组件的已生成程序集
- ios 错误问题
- 详解TLD视觉跟踪技术
- hdu 3555 数位dp水题 记忆化搜索做法
- Android中颜色的使用
- iOS设计模式学习 (二) OC协议之接口继承和代理设计
- java之final
- Linux软连接和硬链接
- tiny210移植mjpeg-streamer
- 如何为你的数据库事务日志减肥?
- docker这么火,我也想玩玩 centos6.5
- forbomb