开学之后完全没时间写博客....

HDU 2089 不要62(vjudge) 数位DP

思路:

题目给出区间[n,m] ,找出不含4或62的数的个数

用一个简单的差分:先求0~m+1的个数,再减去0~n的个数.

但问题依旧不简单,再次简化为求0~i位数中不含4或62的数的个数.

i= //0~9中
i= //0~99中
i= //0~999中
......
dp[i][] //0~i位数中的吉利数
dp[i][] //0~i位数中以2打头的吉利数
dp[i][] //0~i位数中的非吉利数(含4或62)

所以第i位数中的吉利数个数为:

dp[i][]=dp[i-1][]*-dp[i-][i]

第i位数中以2打头的幸运数个数为:

dp[i][]=dp[i-][]

第i位数中的非吉利数个数为:

dp[i][]=dp[i-][]*+dp[i-][]+dp[i-][]

同时初始值为:

dp[][]=;
dp[][]=;
dp[][]=;

AC码:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; int dp[][]; void INIT()
{
memset(dp,,sizeof(dp));
dp[][]=;
for(int i=;i<=;i++)
{
dp[i][]=dp[i-][]*-dp[i-][];//在吉利数首位补除了4的9个数,减去在2前补6的个数
dp[i][]=dp[i-][];//吉利数在首位补2
dp[i][]=dp[i-][]*+dp[i-][]+dp[i-][];//不吉利的情况
}
} int work(int x)
{
int d[],cnt=,temp=x;
while(temp)
{
d[++cnt]=temp%;
temp/=;
}
d[cnt+]=;
int flag=,ans=;
for(int i=cnt;i>;i--)
{
ans+=d[i]*dp[i-][];//用前一位所以不吉利数推出
if(flag) ans+=d[i]*dp[i-][];// 之前有不吉利数
else
{
if(d[i]>) ans+=dp[i-][];//4
if(d[i]>) ans+=dp[i-][];//6
if(d[i+]==&&d[i]>) ans+=dp[i][];//62
}
if(d[i]==||(d[i+]==&&d[i]==)) flag=;
}
return x-ans;//减去不吉利数的个数
} int main()
{
int m,n;
INIT();
while(~scanf("%d%d",&n,&m))
{
if(n==&&m==) break;
printf("%d\n",work(m+)-work(n));
}
return ;
}

2019-09-16 18:50:26

2019年9月训练(壹)数位DP (HDU 2089)的更多相关文章

  1. 2019年9月训练(贰)区间DP (luogu 4290)

    区间DP luogu 4290 明显的区间DP. 定义 dp[l][r][k]/*表示区间[l,r]能否凑成k(W,I,N,G)字符*/mp['W']=1;mp['I']=2;mp['N']=3;mp ...

  2. 数位DP HDU - 2089 不要62

    不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  3. 专题训练之数位DP

    推荐以下一篇博客:https://blog.csdn.net/wust_zzwh/article/details/52100392 1.(HDOJ2089)http://acm.hdu.edu.cn/ ...

  4. 2019年5月训练记录(更新ing)

    前言 \(ZJOI\)正式结束了. 但期中考试只考了年级\(216\),退役既视感... 于是就被抓回去补文化课了. 下半个学期可能要以文化课为主了吧! 但周三.周日应该还是会正常参加训练的,但其他时 ...

  5. [UOJ 275/BZOJ4737] 【清华集训2016】组合数问题 (LUCAS定理的运用+数位DP)

    题面 传送门:UOJ Solution 这题的数位DP好蛋疼啊qwq 好吧,我们说回正题. 首先,我们先回忆一下LUCAS定理: \(C_n^m \equiv C_{n/p}^{m/p} \times ...

  6. 【学习笔记&训练记录】数位DP

    数位DP,即对数位进行拆分,利用数位来转移的一种DP,一般采用记忆化搜索,或者是先预处理再进行转移 一个比较大略的思想就是可以对于给定的大数,进行按数位进行固定来转移记录答案 区间类型的,可以考虑前缀 ...

  7. 2018牛客网暑假ACM多校训练赛(第四场)C Chiaki Sequence Reloaded (组合+计数) 或 数位dp

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round4-C.html 题目传送门 - https://www.no ...

  8. 牛客训练三:处女座和小姐姐(三)(数位dp)

    题目链接:传送门 思路:数位dp的记忆化搜索模板 从高位向低位枚举,逐位确定每一位的6的个数,dp[i][s]表示处理到第i条边,状态为s时的数字的个数. 注意,要使用long long类型. #in ...

  9. 【2019.7.20 NOIP模拟赛 T2】B(B)(数位DP)

    数位\(DP\) 首先考虑二进制数\(G(i)\)的一些性质: \(G(i)\)不可能有连续两位第\(x\)位和第\(x+1\)位都是\(1\).因为这样就可以进位到第\(x+2\)位.其余情况下,这 ...

随机推荐

  1. SpringMVC——文件上传下载

    一.单文件上传 1.导入依赖 <dependency> <groupId>commons-io</groupId> <artifactId>common ...

  2. 1.4 JAVA日期处理

    一.JAVA日期 参考链接:https://www.runoob.com/java/java-date-time.html 1.日期两个构造函数 1.第一个构造函数使用当前日期和时间来初始化对象.Da ...

  3. 7.RabbitMQ--消息确认机制(confirm)

    RabbitMQ--消息确认机制(confirm) Confirm模式 RabbitMQ为了解决生成者不知道消息是否真正到达broker这个问题,采用通过AMQP协议层面为我们提供了事务机制方案,但是 ...

  4. 教你快速写一个EventBus框架

    前言EventBus相信大多数人都用过,其具有方便灵活.解耦性强.体积小.简单易用等优点,虽然现在也有很多优秀的替代方案如RxBus.LiveDataBus等,但不可否认EventBus开创了消息总线 ...

  5. 包与类的命名 - service tool util 区别

    包与类的命名和定位时,service tool util 常常搞混淆,在此分析一下它们的定位: 名称 特点与定位 独立性 方法和类的属性 util 通用的.与业务无关的,可以独立出来,可供其他项目使用 ...

  6. 【Eureka】Eureka 是什么

    Eureka是什么? Eureka 是 Netflix 的一个子模块,也是核心模块之一.Eureka 是一个基于 Rest 的服务,用于定位服务,以实现云端中间层服务发现和故障转移.服务注册和发现对于 ...

  7. Java-NIO 之 Buffer 与 Channel

    NIO:一种同步非阻塞的 I/O 模型,也是 I/O 多路复用的基础. 同步与异步 同步:发起一个调用后,被调用者未处理完请求之前,调用不返回. 异步:发起一个调用后,立刻得到被调用者的回应表示已接收 ...

  8. mp3收藏

    [程序员一个]一人饮酒醉 https://kg2.qq.com/node/play?s=lW1J2-lrkrR3klvD&shareuid=619598862d2a31893d&top ...

  9. PyTorch中使用深度学习(CNN和LSTM)的自动图像标题

    介绍 深度学习现在是一个非常猖獗的领域 - 有如此多的应用程序日复一日地出现.深入了解深度学习的最佳方法是亲自动手.尽可能多地参与项目,并尝试自己完成.这将帮助您更深入地掌握主题,并帮助您成为更好的深 ...

  10. 在Ubuntu 16.04 LTS下编译安装OpenCV 4.1.1

    目录 一 安装前的准备 二 编译并安装OpenCV 4.1.1 注:原创不易,转载请务必注明原作者和出处,感谢支持! OpenCV目前(2019-8-1)的最新版本为4.1.1.本文将介绍如何在Ubu ...