牛客周赛 Round 66 G

news/2024/11/6 22:09:29/文章来源:https://www.cnblogs.com/mgnisme/p/18531146

G.小苯的数位MEX

思路

比较模板的数位dp,虽然我不会

代码

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
using ll = long long;
using ull = unsigned long long;
using pii = pair<int, int>;
using piii = pair<int, pii>;
using pll = pair<ll, ll>;
using plll = pair<ll, pll>;
using plii = pair<ll, pii>;
#define fi first
#define se second
const int INF = 0x3f3f3f3f;
const ull mod1 = (1ull << 61) - 1, mod2 = 1e9 + 7;
const ull base1 = 131, base2 = 13331;
// mt19937 rnd(time(0));const int mod = 998244353;vector<int> nums;
int mex;
int f[11][1100];  //f[dep][state]到第dep位(从高位到低位),该位之前的状态为state(不包括该位)//分别为层数  状态  最高位限制  有无前导零
int dfs(int dep, int state, bool limit, bool lead0) {if (dep == nums.size()) {if (lead0)return mex == 1 ? 1 : 0;for (int i = 0; i < mex; i++) {if ((state >> i & 1) == 0)return limit ? 0 : f[dep][state] = 0;}return limit ? 1 : f[dep][state] = 1;}if (!lead0 && !limit && f[dep][state] != -1) //不加lead0也行return f[dep][state];int up = limit ? nums[dep] : 9;  //根据有无限制确定第dep位枚举上限int res = 0;for (int i = 0; i <= up; i++) {int fst = state | (1 << i);if (lead0 && i == 0) //如果有前导零,则无法传递fst = 0;if (i == mex && (lead0 & i == 0) == 0) //如果i等于mex(没前导零的情况),也是不成立的continue;res += dfs(dep + 1, fst, limit && i == up, lead0 && i == 0);}if (!limit && !lead0)   //不加lead0也行f[dep][state] = res;return res;
}int get(int x) {memset(f, -1, sizeof f);nums.clear();if (!x) { //x为零无法进入while循环,特判return mex == 1 ? mex : 0;}while (x) {nums.push_back(x % 10);x /= 10;}reverse(nums.begin(), nums.end());return dfs(0, 0, 1, 1);
}void solve() {int a, b;cin >> a >> b;b += a;for (int i = 10; i >= 0; i--) {mex = i;int ans = get(b) - get(a - 1);if (ans) {cout << i << " " << ans << endl;return;}}
}int main() {cin.tie(nullptr);ios::sync_with_stdio(false);int _ = 1;cin >> _;while (_--) {solve();}return 0;
}

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

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

相关文章

20241106-语音视频转文字的测试及其价格

一、绘影Ai字幕价格 个人专业版本60元, 商用大约一个120元,支持批量。 二、手机app 讯飞语音、语音转文字等 讯飞听见迅捷转语音 https://www.bilibili.com/read/cv21023516/ 功能 价格 视频、语音转文字的原理 涉及的模型 感悟: 我使用33字幕本地识别,实在太废时间了。我…

javascript模块 (Module) 简介

https://blog.csdn.net/chehec2010/article/details/119804381随着ES6的出现,js模块已经成为正式的标准了。曾经为了解决js模块问题而发展起来的民间秘籍,requireJs(AMD)、SeaJs(CMD)、Node(CommonJs),已经或者不久的将来会成为历史。了解历史也是很重要的,因为正式标准就是…

11.6虎牙客户端一面

1.自我介绍 2.共享屏幕看代码 ​ 类内不能用auto推导成员变量类型 ​ 类内的成员函数调用应该用作用域 3.struct和class区别 相同点两者都拥有成员函数、公有和私有部分 任何class能完成的工作,struct同样能完成不同点如果不指定,struct默认公有,class默认私有 class默认pri…

helm-v3-新的功能

helm-v3-新的功能 Helm 是什么? Helm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建管理本地或者远程的Chart仓库。 Helm 解决什么痛点?如何统一管理、配置和更新分散的k8s yaml资源文件 如何分发和复用一套应用模板 如何将应…

基于Java+SpringBoot心理测评心理测试系统功能实现四

三、部分系统功能心理测试信息数据层Dao、试题题型信息数据层Dao、试题信息数据层Dao、角色信息数据层Dao、用户信息数据层Dao、前台用户信息数据层Dao、咨询师预约信息数据层Dao、咨询师信息数据层Dao、试卷信息数据层Dao、试卷答案信息数据层Dao一、前言介绍: 1.1 项目摘要 …

七、Spring Boot集成Spring Security之前后分离认证最佳实现

前后分离项目认证流程代码实现,基于spring security原生流程设计,实现RESTFUL接口、分布式缓存二、自定义用户名密码认证过滤器RestfulUsernamePasswordAuthenticationFilter 1、注册过滤器方式使用httpSecurity.addFilter/addFilterBefore/addFilterAfter向过滤器链中添加过…

WPF Slider控件 划一划

WPF Slider控件 划一划Slider控件就是常见的滑块。 控件的外观一般显示一系列刻度,并存在一个可以拖动的滑块,可以通过拖动滑块来控制控件的值。如Windows11的音量控制。 做一个简单的滑块控件,并将滑块的值显示在文本框中。<StackPanel Margin="10"><!…

5种AI合同审查方法,免费开源,提升50%法律文件比对效率

一、系统概述 在法律行业,合同和法律文件的版本审查是确保合规与降低风险的重要步骤。然而,手动对比文档各版本间的差异不仅耗时,且易产生误判。思通数科的AI多模态能力平台专为法律文件审核设计,结合了先进的Diff算法与Levenshtein距离算法,支持字符、单词、段落的精确对…

Markdown编辑入门

Markdown编辑入门 标题 三级标题 四级标题 字体 Hello,world Hello,world Hello,world ~~Hello,world ~~ 引用十步杀一人,千里不留行。分割线图片列表ABC123链接 百度 表格姓名 年龄 性别张三 18 男代码 <html>

基于Azure DevOps 的 CICD 项目部署(.Net Core)

使用微软的 来进行CICD 链接:https://dev.azure.com 创建新项目3.创建项目名称4.选择仓库地址5.选择空模板6.创建代理池7.按照以下步骤把代理部署到服务器上8.连接你的服务器 9.创建新的文件夹 mkdir myange cd myagent 10.可通过链接下载文件 wget https://vstsagentpackage.…

2个月搞定计算机二级C语言——真题(9)解析

1. 前言 本篇我们讲解2个月搞定计算机二级C语言——真题92. 程序填空题 2.1 题目要求2.2 提供的代码 #include <stdio.h> double f1(double x) {return x * x; } double f2(double x, double y) {return x * y; } /**********found**********/ __1__ fun(int i, do…

【转载】TortoiseSVN怎么恢复到以前版本-恢复到以前版本的方法

原文链接:https://blog.csdn.net/hbiao68/article/details/131595214 SVN(Subversion)是一个版本控制系统,它允许用户跟踪文件的更改并回退到以前的版本。 第一步:进到到文件目录,右键点击【空白处】。 第二步:点击打开【TortoiseSVN】。 第三步:点击【更新至版本】。 …