传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6148

Valley Numer

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1157    Accepted Submission(s): 595

Problem Description

众所周知,度度熊非常喜欢数字。

它最近发明了一种新的数字:Valley Number,像山谷一样的数字。

当一个数字,从左到右依次看过去数字没有出现先递增接着递减的“山峰”现象,就被称作 Valley Number。它可以递增,也可以递减,还可以先递减再递增。在递增或递减的过程中可以出现相等的情况。

比如,1,10,12,212,32122都是 Valley Number。

121,12331,21212则不是。

度度熊想知道不大于N的Valley Number数有多少。

注意,前导0是不合法的。

Input

第一行为T,表示输入数据组数。

每组数据包含一个数N。

● 1≤T≤200

● 1≤length(N)≤100

Output

对每组数据输出不大于N的Valley Number个数,结果对 1 000 000 007 取模。

Sample Input

3 3 14 120

Sample Output

3 14 119

#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
#include<iostream>
#include<map>
#include<vector>
#include<set>
#include<queue>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;ll a[111],dp[111][10][3];
char s[111];ll dfs(ll pos,ll pre,ll status,bool limit,bool lead)
{if(pos==-1){return lead?0:1;}if(!limit&&!lead&&dp[pos][pre][status]!=-1){return dp[pos][pre][status];}ll res=0;ll up=limit?a[pos]:9;for(ll i=0;i<=up;i++){if(status&&i<pre)continue;ll nxt=0;if(!lead&&(i>pre)||status)nxt=1;ll nxtlead=0;if(i==0&&lead)nxtlead=1;ll nxtlimit=0;if(limit&&i==a[pos])nxtlimit=1;res=(res+dfs(pos-1,i,nxt,nxtlimit,nxtlead))%mod;}if(!limit&&!lead)dp[pos][pre][status]=res;return res;
}int main()
{ll t;scanf("%lld",&t);while(t--){memset(dp,-1,sizeof(dp));scanf("%s",s);ll l=strlen(s);for(ll i=0;i<l;i++){a[i]=s[l-i-1]-'0';}printf("%lld\n",dfs(l-1,0,0,true,true));}return 0;
}

看到几个写数位dp很棒的博客:https://blog.csdn.net/brazy/article/details/77427699

https://www.cnblogs.com/agenthtb/p/7392518.html

HDU6148-Valley Numer【数位dp】相关推荐

  1. 题解HDU6148 Valley Numer(数位DP+深搜DFS)

    题解HDU6148 Valley Numer[数位DP+深搜DFS] 题目 解析 参考源码 题目 Description: 众所周知,度度熊非常喜欢数字. 它最近发明了一种新的数字:Valley Nu ...

  2. HDU 6148 Valley Numer(数位DP)

    Valley Numer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

  3. HDU 6148 Valley Numer [数位dp]

    题意:求出小于等于n的,满足三种情况的任意一种的数的个数: ①每个位数字,递增,如122 ②每个位数字,递减,如211 ③每个位数字,先递减,在递增,如121 题解:数位dp,记录三维,pos(枚举的 ...

  4. HDU6148 Valley Numer

    HDU6148 Valley Numer 题目链接 题目大意: 思路 一道很明显的数位dp,不能出现先增后减这种情况,并且前导0是不合法,所以都需要额外的标志记录状态 代码 #include < ...

  5. [hdu6148][Valley Numer]

    hdu6148 思路 一个数位dp模板题,注意判断前导0.用一个bz来记录当前是应该增还是可增可减.然后排除不满足条件的情况并进行dp即可. 代码 #include<cstdio> #in ...

  6. HDU-6148 Valley Numer(数位DP)

    题意 如果对于一个 nnn 位数 a" role="presentation" style="position: relative;">aaa ...

  7. 2017 百度之星 复赛 Valley Numer(数位dp)

    Valley Numer 数位dp,state标志前面若干位是否存在递增序列. 代码: #include <bits/stdc++.h> using namespace std;typed ...

  8. 2017百度之星复赛:1006. Valley Numer(数位DP)

    Valley Numer  Accepts: 548  Submissions: 1125  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: ...

  9. HDU 6148 Valley Numer (数位dp)

    题意: 求区间内满足非波峰数的个数. 其中波峰 是  先上升 在 下降,  平滑不会影响前面的状态. 思路: 很明显数位dp 令dp[i][j][k] 表示  枚举到数的第i 位, 前一个数字是j   ...

  10. HDU 6148 - Valley Numer(数位DP)

    Valley Numer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

最新文章

  1. jquery 使用小技巧
  2. 每天学一点儿shell:猜数字游戏
  3. 软件工程概论 课堂练习【图书馆系统的用例图】
  4. Oracle:关于分布式数据库(创建数据库链路,创建触发器)
  5. 逆波兰表达式简单介绍
  6. 【渝粤题库】陕西师范大学292241金融市场学Ⅰ 作业(高起专)
  7. java web 来源页_Java:Java Web--分页效果
  8. 用计算机参加关于动漫的工作计划,动漫社团年度工作计划
  9. C++ string 成员函数 length() size() 和 C strlen() 的区别
  10. Oracle下Latch详细介绍
  11. java课程 教 学小结_Java私塾中级课程学习感受和小结3
  12. 正确使用计算机键盘的方法是,电脑键盘指法练习的方法
  13. 【成电860考研】专业课考前划重点-学长课程音频转文字-用科大讯飞花钱买的-三万五千字
  14. 《维C中国》乡村助农暖人心第三站嘉宝果农场
  15. JavaBase 求 个位,十位,百位,千位
  16. 张朝阳开课手推E=mc²,李永乐现场狂做笔记!CEO当太久都忘了他是MIT物理博士
  17. 计算机病毒计算机软件系统故障,简要区分计算机病毒与软硬件故障问题
  18. 合成大西瓜游戏|微信合成大西瓜游戏技巧及资源
  19. ArrayBuffer DataView
  20. 软件设计师知识体系归纳总结

热门文章

  1. python版钉钉回调
  2. CSS -- CSS字体样式、文本样式、去掉列表的小圆点、背景、背景渐变
  3. 怎么在电脑上进行音频以及视频的素材合并
  4. Steam 网络联机配置代码
  5. 用word字体转换来代替手写作业--最详细
  6. 进销存ERP系统、销售单、采购单、退货单、库存管理、库存盘点、调拨、借入、借出、出库、入库、归还单、收款单、付款单、资金流水、销售报表、采购报表、库存报表、财务报表、商品库、电商erp、连锁erp
  7. 困难时拉你一把的图片_人,最不能忘记的,是在你困难时拉你一把的人,句句现实经典...
  8. Python获取抖音视频链接
  9. 间歇性禁食 肠道菌群 心血管代谢疾病
  10. 【GNN报告】北邮石川组