【数位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 ...
随机推荐
- IOS开发——正则表达式验证手机号、密码
App的实际应用中,用户登陆功能基本是每个App都有需求的一个功能.而当前我们很常规的做法,就是让用户把手机号作为自己的用户名,而在注册获取短信验证码的过程中,我们首先要完成的一个步骤,就是校验用户的 ...
- 第一个输出程序 Console.WriteLine
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Java 动态代理(转)
一.代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后 处理消息等.代理类与委托类之间通常会存在 ...
- (总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解
PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...
- JavaScript之转义字符
<html lang="en"> <head> <meta charset="UTF-8"> <meta na ...
- 在实体对象中访问导航属性里的属性值出现异常“There is already an open DataReader associated with this Command which must be closed first”
在实体对象中访问导航属性里的属性值出现异常“There is already an open DataReader associated with this Command which must be ...
- rsyslogd: error during parsing file /etc/rsyslog.conf, on or before line 55: warnings occured in fil
zjtest7-frontend:/root# rsyslogd -n rsyslogd: error during parsing file /etc/rsyslog.conf, on or bef ...
- HDU 5768 Lucky7(CRT+容斥原理)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5768 [题目大意] 求出一个区间内7的倍数中,对于每个ai取模不等于bi的数的个数. [题解] 首 ...
- Hadoop MapReduce链式实践--ChainReducer
版本号:CDH5.0.0,HDFS:2.3.0,Mapreduce:2.3.0,Yarn:2.3.0. 场景描写叙述:求一组数据中依照不同类别的最大值,比方,例如以下的数据: data1: A,10 ...
- 汉诺塔 python版
汉诺塔问题:如果将n个盘子(由小到大)从a通过b,搬到c,搬运过程中不能出现小盘子在大盘子下面的情况. 思路分析:假设前要移动第100个盘子,分两步走,移动第99个:再移动第100个:而要移动第99个 ...