牛客小白月赛8: E. 诡异数字(数位DP)
链接: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)相关推荐
- 牛客小白月赛21 I I love you(dp的优化)
题目链接 题目描述 此时相望不相闻,愿逐月华流照君. 一纸情书,到底蕴含了多少倍的爱情呢? I love you, not only for what you are, but for what I ...
- 牛客小白月赛58 B(暴力)C(思维)D(dp滚动数组优化)
牛客小白月赛58 感觉没什么意思,这场月赛出题人有点问题. B 题意:给定一定的数据填充顺序和每一个填充层的名称,只有填充满了上一层才可以填充下一层. 但是每一层又属于某一个大层,一个大层中包含了若干 ...
- 牛客小白月赛24 J.建设道路
牛客小白月赛24 J.建设道路 题目链接 题目描述 牛牛国有 nnn 个城市,编号为 1-n,第 iii 个城市有一个价值 aia_iai ,牛国的国王牛阔落特别喜欢在牛牛国旅游,并且他不想每次旅游 ...
- 牛客小白月赛4 I.合唱队形
牛客小白月赛4 I.合唱队形 题目链接 题目描述 铁子的班级在毕业晚会有一个合唱节目,到了毕业晚会的时候,他们必须排成一排一起合唱"认错","当然是选择原谅他" ...
- 牛客小白月赛20 E.区区区间
牛客小白月赛20 E.区区区间 题目描述 Keven 特别喜欢线段树,他给你一个长度为 n 的序列,对序列进行m 次操作. (略) 输入描述: 第一行两个整数 n.m,表示序列的长度和操作次数(1&l ...
- 牛客小白月赛3 C.博弈
牛客小白月赛3 C.博弈 题目链接 题目描述 XHRlyb 在和 Cwbc 玩游戏. 在一个多重集合中有在 [l,r] 中的全部整数各一个,即 l,l+1,l+2,......,rl,l+1,l+2, ...
- 牛客小白月赛21 G.Game
牛客小白月赛21 G.Game 题目描述 Nancy喜欢博弈! Johnson和Nancy得到了一个神奇的多重集合,仅包含一个正整数n,两个人轮流进行操作. 一次操作可以将集合中一个数字分解为它的任意 ...
- 牛客小白月赛6 G.指纹锁
牛客小白月赛6 G.指纹锁 题目链接 题目描述 HA实验有一套非常严密的安全保障体系,在HA实验基地的大门,有一个指纹锁. 该指纹锁的加密算法会把一个指纹转化为一个不超过1e7的数字,两个指纹数值之差 ...
- 牛客小白月赛20 D.3的倍数
牛客小白月赛20 D.3的倍数 题目描述 给你 n 个字符串,每个字符串最多包含 A - Z 这26个字母,Keven 现在取了一些字符串,发现每个字母出现的次数都是 3 的倍数,Keven 现在想要 ...
最新文章
- 在Forms验证模式下,实现多个站点(SubDomain相同)共享同一用户登录状态
- java计算器监听_计算器及事件监听
- CentOS 7 下的 Firewall
- 用魔法打开科学,孩子惊叫连连,想不爱科学都难!
- 5个常见的Hibernate异常及其解决方法
- Oracle的to_char()函数使用
- java操作日志记录_通用日志记录(java)
- 关于public class 类名{ public static void main(String[] args)}的一些说明
- linux下设置opencv环境变量
- [leetcode]Symmetric Tree
- php168 的采集规则的改动
- C#设计模式系列:抽象工厂模式(AbstractFactory)
- 远程桌面命令是什么 如何使用命令连接远程桌面
- .vbb格式转换为txt格式(matlab实现),在此以Caltech Pedestrian Dataset数据集的annotations为例
- 重磅!达摩院发布2022十大科技趋势
- 阿里云国际ECS云服务器免费试用版如何使用?
- 苹果手机直播显示服务器,搭建流媒体服务器(iOS直播 )
- 般若堂--Spring Boot系列之参数校验
- 标记网购ThinkPad过程
- CNC脱机源代码 USB雕刻机CNC 3联动 步进电机控制器CNC脱机源代码
热门文章
- python工资这么高为什么不学-现在Python就业薪资高吗?
- python免费课程400节-北京市python儿童学编程
- 国外巨头鏖战的新领域——语音识别
- 语音识别的两个方法_语音识别的应用有哪些
- python入门实践19章_求助贴,python编程才能够入门到实践 第19章 19.2.2 代码出错
- 前端请求接口post_程序员:HttpClient进行post请求的工具类,访问第三方接口HTTPS...
- 生产力系统的四类要素
- Vue中computed 计算机属性、getter、setter
- 【html笔记】html介绍和语法入门
- 在windows使用vs2008编译live555