HDU 3555 (递推&&记忆化)
来源:互联网 发布:ubuntu 服务器下载 编辑:程序博客网 时间:2024/05/16 12:13
#include<string.h>
#define max 25
typedef __int64 LL;
LL dp[max][3];
//dp[i][0] 不含49
//dp[i][1] 不含49但最高位为9
//dp[i][2] 含49
void init(){
memset(dp,0,sizeof(dp));
dp[0][0]=1;
for(int i=1;i<max;i++){
dp[i][0]=dp[i-1][0]*10-dp[i-1][1];
dp[i][1]=dp[i-1][0];
dp[i][2]=dp[i-1][2]*10+dp[i-1][1];
}
}
LL solve(LL n){
int bit[max],len=0;
while(n){
bit[++len]=n%10;
n/=10;
}
bit[len+1]=0;
LL ans=0;
bool flag=false;
for(int i=len;i;i--){
ans+=bit[i]*dp[i-1][2];
if(flag){
ans+=bit[i]*dp[i-1][0];
}
else{
if(bit[i]>4){
ans+=dp[i-1][1];
}
if(bit[i+1]==4&&bit[i]==9){
flag=true;
}
}
}
if(flag){
ans++;
}
return ans;
}
int main(){
init();
int T;
scanf("%d",&T);
while(T--){
LL n;
scanf("%I64d",&n);
printf("%I64d\n",solve(n));
}
}
#include<stdio.h>
#include<string.h>
#define max 25
typedef long long LL;
LL dp[max][3];
int bit[max],len;
LL dfs(int pos,int have,int doing){
if(pos==0){
return have==2;
}
if(!doing && dp[pos][have]!=-1){
return dp[pos][have];
}
LL ans=0;
int end=doing?bit[pos]:9;
for(int i=0;i<=end;i++){
int nhave=have;
if(have==1&&i!=4){
nhave=0;
}
if(have==0&&i==4){
nhave=1;
}
if(have==1&&i==9){
nhave=2;
}
ans+=dfs(pos-1,nhave,doing&&i==end);
}
if(!doing){
dp[pos][have]=ans;
}
return ans;
}
LL solve(LL n){
len=0;
while(n){
bit[++len]=n%10;
n/=10;
}
return dfs(len,0,true);
}
int main(){
memset(dp,-1,sizeof(dp));
int t;
scanf("%d",&t);
while(t--){
LL n;
scanf("%lld",&n);
printf("%lld\n",solve(n));
}
}
- HDU 3555 (递推&&记忆化)
- HDU 2084 数塔【dp(递推)+(记忆化)】
- [动态规划/记忆化搜索/递推] HDU/HOJ 1978 How many ways 万恶的instream
- hdu 5754 博弈递推 dfs记忆优化
- 记忆化搜索与递推
- POJ 2506 高精度+递推+记忆化搜索
- 数字三角形——递归、递推、记忆化搜索
- Game of Sum 记忆化搜索/递推
- HDU4919 Exclusive or(递推+记忆化搜索+大数)
- sdutoj 3062 蝴蝶效应 (记忆化搜索/递推)
- HDU4571-区间DP,记忆化搜索,递推
- POJ1088 滑雪 经典DP 记忆化搜索和递推
- 洛谷Oj-传球游戏-递推 + 记忆化搜索
- 9.1数字三角形(记忆化搜索与递推)
- 【记忆化搜索】HDU
- hdu 1165 递推
- HDU 2050 递推
- [HDU-1035] 递推
- 控制文件的备份与恢复(RMAN工具)
- opencv的基本认识
- 最短路之dijkstra 算法
- 菜鸟必知的Win 7系统控制面板的操作技巧【绿色】
- android自动获取短信验证码
- HDU 3555 (递推&&记忆化)
- 黑马程序员-Map集合
- ubuntu下中文乱码解决方案(全)
- 开发者想走向海外:你融入老外的圈子了吗?
- Windows下建立eCos开发环境(4)-eCos源代码安装
- 外汇平台识别终极方法
- JVM基础研究整理之九--新一代的垃圾回收算法
- 黑马程序员_Ajax中使用XML(从服务器端输出XML格式数据,在模版页接收数据)
- Myeclipse配置svn插件