M - 上帝造题的八分钟(数位dp,dfs—dp,****)

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

我们称一个数为 fufu 数,当且仅当一个数满足下述性质:它的数位中有至少 3 个相邻的数字 3,且数字 0 的个数与数字 1 的个数相差至少为 1 的正整数。

给定一个区间 [l,r],你需要求出区间内的 fufu 数的个数。

答案对 10^9+7 取模。

输入描述:

输入一行,包括两个正整数 l,r(1≤l≤r≤10^100),表示你要查找的区间。

输出描述:

输出一行,一个正整数,表示区间内满足题目所描述性质的数量。答案对 10^9 +7 取模。

示例1

输入

1 500

输出

0

说明

显然在 [1,500] 内没有 fufu 数。

示例2

输入

1333 1333

输出

1

说明

1333 中有 3 个相邻的数字 3,数字 0 的个数为 0,数字 1 的个数为 1,满足 fufu 数的性质。

示例3

输入

1 20000

输出

20

解析:

这道题显然是一道数位dp题。

f[pos][cp][pre1][pre2][limit][n3][last] 表示:

从高位往低位看,第pos位,0和1的个数差为cp,前一位为pre1,前二位为pre2,上一位是否为最大值,是否含有3个连续的3,当前一位是0还是1。

#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<math.h>
#include<map>
#include<sstream>
#include<deque>
#include<unordered_map>
#include<unordered_set>
#include<bitset>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<long long, long long> PLL;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
const int INF = 0x3f3f3f3f;
const LL Mod = 1e9 + 7;
const int N = 100 + 10, M = 4e5 + 10, P = 110;
string l, r;
LL f[105][205][11][11][2][2][2];LL dp(int pos, int cp, int pre1, int pre2, int limit, int n3, int last,vector<int>&num) {LL ret = 0;if (pos == -1)return n3 && (abs(cp - 100) >= 1);if (f[pos][cp][pre1][pre2][limit][n3][last])return f[pos][cp][pre1][pre2][limit][n3][last];int up = limit ? num[pos] : 9;for (int i = 0; i <= up; i++) {if (last && i == 0) {ret += dp(pos - 1, cp, i, pre1, limit && (i == up), n3, 1, num);}else {ret += dp(pos - 1, cp + (i == 0) - (i == 1), i, pre1, limit && (i == up), n3 | (pre1 == 3 && pre2 == 3 && i == 3), 0, num);}ret %= Mod;}return f[pos][cp][pre1][pre2][limit][n3][last] = ret;
}LL work(vector<int>num) {memset(f, 0, sizeof f);return dp(num.size()-1, 100, 0, 0, 1, 0, 1,num);
}bool check(vector<int>num) {int n1 = 0, n0 = 0;for (int i = 0; i < num.size(); i++) {if (num[i] == 1)n1++;else if (num[i] == 0)n0++;}if (!abs(n1 - n0))return 0;int n3 = 0;for (int i = 0; i < num.size(); i++) {if (num[i] == 3) {n3++;if (n3 == 3)return 1;}else {n3 = 0;}}return 0;
}int main() {vector<int>L, R;cin >> l >> r;for (int i = 0; i < l.size(); i++) {L.push_back(l[i] - '0');}for (int i = 0; i < r.size(); i++) {R.push_back(r[i] - '0');}reverse(L.begin(), L.end());reverse(R.begin(), R.end());//cout << "___________________" << check(L) << endl;LL ans = (((work(R) - work(L)) % Mod + check(L)) %Mod+ Mod) % Mod;cout << ans << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/3723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python拿取nmap扫描的结果并存在csv文件中

今天分享一个使用subprocess模块来执行nmap命令,并使用csv模块来将结果写入CSV文件的方法。 代码如下: import subprocess import csv# 定义扫描的参数 ip_address = 172.18.0.1/24 # 扫描的IP地址或CIDR port_range = -p 443 # 扫描的端口范围 output_filename = s…

睫毛膏上架亚马逊销售需要做什么准备 HRIPT / RIPT斑贴试验

睫毛膏上架需要办理&#xff1a;HRIPT / RIPT斑贴试验COA成分分析证书BCOP认证报告&#xff01; 什么是BCOP&#xff1a; 亚马逊美国站对接触眼睛的眼影&#xff0c;液体眼线笔&#xff0c;磁性睫毛&#xff0c;假睫毛等产品&#xff0c;需提供BCOP&#xff08;Bovine Corneal…

存在矛盾的题目

{ u t t − a 2 u x x 0 , t > 0 , x > 0 , u ( x , 0 ) sin ⁡ ( x ) 2 x , x ≥ 0 , u t ( x , 0 ) cos ⁡ ( x ) , x ≥ 0 , u x ( 0 , t ) 2 , t ≥ 0. \begin{cases} u_{tt} - a^2 u_{xx} 0, & t > 0, x > 0, \\ u(x, 0) \sin(x) 2x, & x \ge…

解线性方程组——上三角、下三角,回代算法 | 北太天元

1. 解上三角(回代) a i i ≠ 0 a_{ii\neq0} aii0​ , i 1 , 2 , … , n i1,2,\ldots,n i1,2,…,n a 11 x 1 a 12 x 2 ⋯ a 1 n x n b 1 a 22 x 2 ⋯ a 2 n x n b 2 ⋯ a n n x n b n \begin{aligned} a_{11}x_1a_{12}x_2\cdotsa_{1n}x_n&b_1 \\ a_{22}x_2\cdot…

解决idea不识别${pageContext.request.contextPath}的方法

文章目录 一、产生原因二、解决方法——直接修改web.xml文件三、修改模板——找到web.xml模板&#xff0c;修改替换 一、产生原因 由于web.xml 使用的web-app版本号过低。导致无法识别"{pageContext.request.contextPath}"。 IDEA在创建javaweb项目的时候&#xff0…

synchronized 之谜

序言 本文给大家介绍一下 synchronized 关键字的部分原理。 一、内存中的 Java 对象 class A {private String attr; }先引入一个问题&#xff1a;上面类 A 有一个属性 attr。当类 A 实例化之后的对象在内存中是如何表示的呢&#xff1f; 在内存中&#xff0c;Java 对象由三…

2024年03月CCF-GESP编程能力等级认证Python编程二级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(共15题,共30分) 第1题 小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是? A.小程序 B.计时器 C.操作系统 D.神话人物 答案…

【Linux驱动层】iTOP-RK3568学习之路(三):字符设备驱动框架

一、总体框架图 二、字符设备相关函数 静态申请设备号 register_chrdev_region 函数原型&#xff1a;register_chrdev_region(dev_t from, unsigned count, const char *name) 函数作用&#xff1a;静态申请设备号&#xff0c;可以一次性申请多个连续的号&#xff0c;count指定…

电阻理论基础

电流的形成是电荷运动&#xff0c;电子方向相反&#xff0c;标量 电压&#xff1a;电势有参考点&#xff0c;是一个相对量 电阻的值不取决于电压和电流的&#xff0c; Ra表示标准电阻 R表示任意温度的电阻

Transformer step by step--Positional Embedding 和 Word Embedding

Transformer step by step往期文章&#xff1a; Transformer step by step--层归一化和批量归一化 要把Transformer中的Embedding说清楚&#xff0c;那就要说清楚Positional Embedding和Word Embedding。至于为什么有这两个Embedding&#xff0c;我们不妨看一眼Transformer的…

代码随想录算法训练营第三十八天| LeetCode509.斐波那契数、LeetCode70.爬楼梯、LeetCode746.使用最小花费爬楼梯

LeetCode 509 斐波那契数 题目链接&#xff1a;509. 斐波那契数 - 力扣&#xff08;LeetCode&#xff09; 【解题思路】 1.确定dp数组以及下标的含义 dp[i]的定义为&#xff1a;第i个数的斐波那契数值是dp[i] 2.确定递推公式 递推公式就是题目说的斐波那契值递推公式 3.确定…

【Java GUI】人机对弈五子棋

在学校的Java课程中&#xff0c;我们被分配了一项有趣的任务&#xff1a;开发一款能够实现人机对弈的五子棋游戏。为了更好地理解Java GUI的运用&#xff0c;并与大家分享学习心得&#xff0c;我将整个开发过程记录在这篇博客中。欢迎大家阅读并提供宝贵的意见和建议&#xff0…

微信小程序-------模板与配置

能够使用 WXML 模板语法渲染页面结构能够使用 WXSS 样式美化页面结构能够使用 app.json 对小程序进行全局性配置能够使用 page.json 对小程序页面进行个性化配置能够知道如何发起网络数据请求 一.WXML 模板语法 数据绑定 1. 数据绑定的基本原则 ① 在 data 中定义数据 ② 在…

文件分享新风尚,二维码生成器全功能解析

随着科技的飞速发展&#xff0c;二维码生成器已经成为我们日常生活中不可或缺的一部分。无论是支付、下载应用还是获取信息&#xff0c;二维码都以其便捷性和高效性赢得了广大用户的青睐。在这样的背景下&#xff0c;二维码生成器应运而生&#xff0c;不仅支持多文件生成二维码…

Android Studio修改“choose boot runtime for the IDE“后无法打开

在Android Studio中选择了"choose boot runtime for the IDE"的New后&#xff0c;会自动重启AS&#xff0c;然后就无法打开android studio了&#xff0c;打开直接报错&#xff0c;cause by如下 Unable to make field protected java.lang.Runnable java.awt.event.In…

[leetcode] 58. 最后一个单词的长度

文章目录 题目描述解题方法倒序遍历java代码复杂度分析 题目描述 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1&#xff1a…

未来已来:解锁AGI的无限潜能与挑战

未来已来&#xff1a;解锁AGI的无限潜能与挑战 引言 假设你有一天醒来&#xff0c;发现你的智能手机不仅提醒你今天的日程&#xff0c;还把你昨晚做的那个奇怪的梦解释了一番&#xff0c;并建议你可能需要减少咖啡摄入量——这不是科幻电影的情节&#xff0c;而是人工通用智能…

maldev tricks在注册表中存储 payload

简介 注册表是 Windows 操作系统中一个重要的数据库&#xff0c;它包含 Windows 操作系统和应用程序的重要设置和选项。由于注册表的功能非常强大&#xff0c;因此注册表对于恶意程序来说是非常有利用价值的。 在 windows 注册表中存储二进制数据&#xff0c;这是一种常见的技…

每天一个数据分析题(二百九十六)

订单详情表是以每一笔订单的每一件商品为最小业务记录单位进行记录的&#xff0c;那么可能成为订单详情表的主键字段的是&#xff1f; A. 订单编号 B. 产品编号 C. 订单ID D. 订单编号产品编号 题目来源于CDA模拟题库 点击此处获取答案 cda数据分析考试&#xff1a;点击…

十七、Java网络编程(一)

1、Java网络编程的基本概念 1)网络编程的概念 Java作为一种与平台无关的语言,从一出现就与网络有关及其密切的关系,因为Java写的程序可以在网络上直接运行,使用Java,只需编写简单的代码就能实现强大的网络功能。下面将介绍几个与Java网络编程有关的概念。 2)TCP/IP协议概…