链接:https://www.nowcoder.com/acm/contest/214/E
来源:牛客网

题目描述

有一天clccle在家里玩手机,突然手机上出现了一个诡异的黑影,眼里闪烁着白光,发出了奇怪的声音(像是正常的声音倒放之后再正放的样子),clccle努力辨别后终于听懂了这个黑影在说什么,大概如下,给定你一个区间[l,r]和多个约束,
请你求出在这个区间内满足这个约束的数字个数(不含前导零),如果clccle不能在1s内求出这个答案,就会被送入一个奇怪的旅馆(Rusty Lake Hotel),因为clccle很害怕,请你帮她在1s之内求出这个答案

输入描述:

注意:此题有多组数据第一行,一个整数T,代表数据组数对于每组数据,有三个数字 l,r,n接下来n行,每行一个数字x,接下来一个数len表示数字x在数字串中连续出现的次数不能大于len

输出描述:

对于每组数据输出一个整数,表示l,r中满足约束的数字个数。(对20020219取模)

输入

2
0 50 2
4 1
4 4
0 100 2
4 1
5 1

输出

50
99

强行诡异。。

很裸的一个数位DP,dp[len][x][sum]表示当前长度为len,上一个数字是x,且已经连续出现了sum次的合法数字个数

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<string>
#include<math.h>
#include<queue>
#include<stack>
#include<iostream>
using namespace std;
#define LL long long
#define mod 1000000007
int str[24], most[24];
LL dp[24][12][24];
LL Sech(int len, int now, int sum, int flag)
{LL ans;int u, i;if(sum>most[now])return 0;if(len==0)return 1;if(flag==0 && dp[len][now][sum]!=-1)return dp[len][now][sum];if(flag==1)  u = str[len];else  u = 9;ans = 0;for(i=0;i<=u;i++){if(i==now)ans += Sech(len-1, now, sum+1, flag&&i==u);elseans += Sech(len-1, i, 1, flag&&i==u);}if(flag==0)dp[len][now][sum] = ans;return ans;
}
LL Jud(LL x)
{int len = 0;len = 0;if(x==-1)return 0;while(x){str[++len] = x%10;x /= 10;}return Sech(len, 0, 0, 1);
}
int main(void)
{LL l, r;int T, n, x, y, i;scanf("%d", &T);while(T--){memset(dp, -1, sizeof(dp));scanf("%lld%lld%d", &l, &r, &n);for(i=0;i<=9;i++)most[i] = 99999;for(i=1;i<=n;i++){scanf("%d%d", &x, &y);most[x] = min(most[x], y);}printf("%lld\n", (Jud(r)-Jud(l-1))%20020219);}return 0;
}
/*
125
0 236927938 0
*/

牛客小白月赛8: E. 诡异数字(数位DP)相关推荐

  1. 牛客小白月赛21 I I love you(dp的优化)

    题目链接 题目描述 此时相望不相闻,愿逐月华流照君. 一纸情书,到底蕴含了多少倍的爱情呢? I love you, not only for what you are, but for what I ...

  2. 牛客小白月赛58 B(暴力)C(思维)D(dp滚动数组优化)

    牛客小白月赛58 感觉没什么意思,这场月赛出题人有点问题. B 题意:给定一定的数据填充顺序和每一个填充层的名称,只有填充满了上一层才可以填充下一层. 但是每一层又属于某一个大层,一个大层中包含了若干 ...

  3. 牛客小白月赛24 J.建设道路

    牛客小白月赛24 J.建设道路 题目链接 题目描述 牛牛国有 nnn 个城市,编号为 1-n,第 iii 个城市有一个价值 aia_iai​ ,牛国的国王牛阔落特别喜欢在牛牛国旅游,并且他不想每次旅游 ...

  4. 牛客小白月赛4 I.合唱队形

    牛客小白月赛4 I.合唱队形 题目链接 题目描述 铁子的班级在毕业晚会有一个合唱节目,到了毕业晚会的时候,他们必须排成一排一起合唱"认错","当然是选择原谅他" ...

  5. 牛客小白月赛20 E.区区区间

    牛客小白月赛20 E.区区区间 题目描述 Keven 特别喜欢线段树,他给你一个长度为 n 的序列,对序列进行m 次操作. (略) 输入描述: 第一行两个整数 n.m,表示序列的长度和操作次数(1&l ...

  6. 牛客小白月赛3 C.博弈

    牛客小白月赛3 C.博弈 题目链接 题目描述 XHRlyb 在和 Cwbc 玩游戏. 在一个多重集合中有在 [l,r] 中的全部整数各一个,即 l,l+1,l+2,......,rl,l+1,l+2, ...

  7. 牛客小白月赛21 G.Game

    牛客小白月赛21 G.Game 题目描述 Nancy喜欢博弈! Johnson和Nancy得到了一个神奇的多重集合,仅包含一个正整数n,两个人轮流进行操作. 一次操作可以将集合中一个数字分解为它的任意 ...

  8. 牛客小白月赛6 G.指纹锁

    牛客小白月赛6 G.指纹锁 题目链接 题目描述 HA实验有一套非常严密的安全保障体系,在HA实验基地的大门,有一个指纹锁. 该指纹锁的加密算法会把一个指纹转化为一个不超过1e7的数字,两个指纹数值之差 ...

  9. 牛客小白月赛20 D.3的倍数

    牛客小白月赛20 D.3的倍数 题目描述 给你 n 个字符串,每个字符串最多包含 A - Z 这26个字母,Keven 现在取了一些字符串,发现每个字母出现的次数都是 3 的倍数,Keven 现在想要 ...

最新文章

  1. 在Forms验证模式下,实现多个站点(SubDomain相同)共享同一用户登录状态
  2. java计算器监听_计算器及事件监听
  3. CentOS 7 下的 Firewall
  4. 用魔法打开科学,孩子惊叫连连,想不爱科学都难!
  5. 5个常见的Hibernate异常及其解决方法
  6. Oracle的to_char()函数使用
  7. java操作日志记录_通用日志记录(java)
  8. 关于public class 类名{ public static void main(String[] args)}的一些说明
  9. linux下设置opencv环境变量
  10. [leetcode]Symmetric Tree
  11. php168 的采集规则的改动
  12. C#设计模式系列:抽象工厂模式(AbstractFactory)
  13. 远程桌面命令是什么 如何使用命令连接远程桌面
  14. .vbb格式转换为txt格式(matlab实现),在此以Caltech Pedestrian Dataset数据集的annotations为例
  15. 重磅!达摩院发布2022十大科技趋势
  16. 阿里云国际ECS云服务器免费试用版如何使用?
  17. 苹果手机直播显示服务器,搭建流媒体服务器(iOS直播 )
  18. 般若堂--Spring Boot系列之参数校验
  19. 标记网购ThinkPad过程
  20. CNC脱机源代码 USB雕刻机CNC 3联动 步进电机控制器CNC脱机源代码

热门文章

  1. python工资这么高为什么不学-现在Python就业薪资高吗?
  2. python免费课程400节-北京市python儿童学编程
  3. 国外巨头鏖战的新领域——语音识别
  4. 语音识别的两个方法_语音识别的应用有哪些
  5. python入门实践19章_求助贴,python编程才能够入门到实践 第19章 19.2.2 代码出错
  6. 前端请求接口post_程序员:HttpClient进行post请求的工具类,访问第三方接口HTTPS...
  7. 生产力系统的四类要素
  8. Vue中computed 计算机属性、getter、setter
  9. 【html笔记】html介绍和语法入门
  10. 在windows使用vs2008编译live555