【数位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 ...
随机推荐
- php基础教程笔记
php的环境搭建很简单,从网上下载wamp service 2.5,官方网址http://www.wampserver.com/,有32位和64位的,必须下载跟系统一致的版本,不然会出现奇怪的错误,这 ...
- printf不同格式表示法
格式代码 A ABC ABCDEFGH %S A ABC ABCDEFGH %5S ####A ##ABC ABCDEFGH %.5S A ABC ABCDE %5.5S ####A ##ABC AB ...
- Paragraph Vector在Gensim和Tensorflow上的编写以及应用
上一期讨论了Tensorflow以及Gensim的Word2Vec模型的建设以及对比.这一期,我们来看一看Mikolov的另一个模型,即Paragraph Vector模型.目前,Mikolov以及B ...
- SSHD配置
http://blog.licess.com/sshd_config/ LIBPCAP http://blog.csdn.net/htttw/article/details/7521053 Oracl ...
- QReadWriteLock上锁容忍的等待时间是多久?
非递归上锁情况下,同一个锁,已经被锁过一次,那么另外一个线程尝试上锁,会被挡在外面,但是会被挡多久呢?挡一分钟会被崩溃,还十分钟,还是永久等待而不崩溃(希望如此)?还是会立刻崩溃?因为不可以重复上锁. ...
- HDU 1076 An Easy Task
题解:枚举即可…… #include <cstdio> int main(){ int now,y,n,T,count; scanf("%d",&T); whi ...
- 《windows程序设计》学习_3.2:左键的使用
#include<windows.h> #include "resource.h" LRESULT CALLBACK WndProc (HWND, UINT, WPAR ...
- 用DBMS_ADVISOR.SQLACCESS_ADVISOR创建SQL Access Advisor访问优化建议
使用OEM方式来创建SQL Access Advisor访问优化建议,已经是四五年的事了,下面就来写写怎样使用DBMS_ADVISOR.SQLACCESS_ADVISOR来创建SQL Access A ...
- Ext2文件系统布局,文件数据块寻址,VFS虚拟文件系统
注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料如<linux内核完全剖析>.<linux c 编程一站式学习>等,只是为了更好 ...
- Windows 10 安装
下载了 Windows 10 的 ISO 文件:WindowsTechnicalPreview-x64-ZH-CN.iso,在 VMWare 10 上进行了安装. 安装时没有 Windows 10 ...