【数位dp】【HDU 3555】【HDU 2089】数位DP入门题
【HDU 3555】原题直通车:
代码:
// 31MS 900K 909 B G++ #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[20];
__int64 dp[20][11];
void digit_dp() {
memset(dp, 0LL, sizeof(dp));
dp[0][0]=1;
for(int i=1; i<20; ++i)
for(int j=0; j<10; ++j)
for(int k=0; k<10; ++k) {
if(j==4&&k==9) continue;
dp[i][j]+=dp[i-1][k];
}
}
__int64 Count(__int64 x) {
__int64 u=x, ret=0LL;
int t=0;
memset(a, 0, sizeof(a));
while(u) a[++t]=u%10, u/=10;
for(int i=t; i>=1; --i) {
for(int j=0; j<a[i]; ++j) ret+=dp[i][j];
if(a[i]==9&&a[i+1]==4){
ret--; break;
}
}
return ret;
}
int main() {
int T; scanf("%d",&T);
digit_dp();
while(T--) {
__int64 n;
scanf("%I64d",&n);
__int64 ans=Count(n);
printf("%I64d\n",n-ans);
}
return 0;
}
【HDU 2089】原题直通车:
代码:
// 15MS 844K 921 B C++ #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int dp[10][10];
void digit_dp() {
memset(dp, 0, sizeof(dp));
dp[0][0]=1;
for(int i=1; i<8; ++i)
for(int j=0; j<10; ++j)
for(int k=0; k<10; ++k) {
if(j==4||k==4||(j==6&&k==2)) continue;
dp[i][j]+=dp[i-1][k];
}
}
int a[10];
int Count(int x) {
memset(a, 0, sizeof(a));
int u=x, ret=0, t=0;
while(u) a[++t]=u%10, u/=10;
for(int i=t; i>=1; --i) {
for(int j=0; j<a[i]; ++j){
ret+=dp[i][j];
}
if(a[i+1]==6){
if(a[i]==2) break;
if(a[i]>2)ret-=dp[i][2];
}
if(a[i]==4) break;
}
return ret;
}
int main() {
int n, m;
digit_dp();
while(~scanf("%d%d",&n,&m)&&n+m)
printf("%d\n",Count(m+1)-Count(n));
return 0;
}
【数位dp】【HDU 3555】【HDU 2089】数位DP入门题的更多相关文章
- HDU 1248 寒冰王座(全然背包:入门题)
HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...
- HDU 3555 Bomb(数位DP模板啊两种形式)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 Problem Description The counter-terrorists found ...
- HDU 3555 Bomb (数位DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 题目大意:从0开始到给定的数字N所有的数字中遇到“49”的数字的个数. Sample Input ...
- hdu 3555 Bomb ( 数位DP)
Bomb Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Subm ...
- hdu 3555 Bomb 【数位DP】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 题意:上一题是不要62 这个是"不要49" 代码: #include < ...
- 动态规划晋级——HDU 3555 Bomb【数位DP详解】
转载请注明出处:http://blog.csdn.net/a1dark 分析:初学数位DP完全搞不懂.很多时候都是自己花大量时间去找规律.记得上次网络赛有道数位DP.硬是找规律给A了.那时候完全不知数 ...
- HDU 3555 Bomb(数位DP)
Bomb Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Subm ...
- hdu 3555 Bomb(数位dp入门)
Bomb Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Subm ...
- hdu 1251 统计难题 (字典树入门题)
/******************************************************* 题目: 统计难题 (hdu 1251) 链接: http://acm.hdu.edu. ...
- hdu String Problem(最小表示法入门题)
hdu 3374 String Problem 最小表示法 view code#include <iostream> #include <cstdio> #include &l ...
随机推荐
- js添加删除元素
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- C学习之结构体
结构体(struct) 结构体是由基本数据类型构成的.并用一个标识符来命名的各种变量的组合,结构体中可以使用不同的数据类型. 1. 结构体说明和结构体变量定义 在Turbo C中, 结构体也是一种数据 ...
- thinkPHP的常用配置项
'URL_PATHINFO_DEPR'=>'-',//修改URL的分隔符 'TMPL_L_DELIM'=>'<{', //修改左定界符 'TMPL_R_DELIM'=>'}&g ...
- js调用ASP.NET打印代码
第一步:添加下面的js <script type="text/javascript"> function printsetup() { ...
- 多线程中Local Store Slot(本地存储槽)
在Java中有一种ThreadLocal机制,为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突.从线程的角度看,就好像每一个线程都完全 ...
- JAVA排序(一) Comparable接口
昨天接到一个实习公司的电话面试,来的很突然,没有准备. 由于以前没用过,在被他问及是否用过JAVA的排序工具Comparable与Comparator时,没有回答上来,只能实话实说没有用过. 感觉太丢 ...
- ThinkPHP 3 的输出
一.ThinkPHP 3 的输出 (重点) a.通过 echo 等PHP原生的输出方式在页面中输出 b.通过display方法输出 想分配变量可以使用assign方法 c.修改左右定界符 休要修改配置 ...
- HelloX项目github协同开发指南
概述 为了提高协同开发效率,HelloX项目已托管到github网站上.根据目前的开发进展,创建了下列几个子项目: HelloX操作系统内核项目:https://github.com/hellox-p ...
- uber奖励和账单详解
为了让各位车主轻松理解奖励政策和账单明细的核算方法,我们特意制作#奖励详解#的专题文章,保证您五分钟内掌握看懂账单的全部要领和诀窍. 第一部分:收入说明 看到收入说明的账单是不是有些晕呢,来来,我们一 ...
- webservice主流框架Axis、Axis2、XFire、CXF的比较
http://ws.apache.org/axis/ http://axis.apache.org/axis2/java/core/ http://xfire.codehaus.org/ http:/ ...