数位dp-acwing(数字游戏)

ops/2024/12/23 17:01:45/

题目:数字游戏

1082. 数字游戏 - AcWing题库

分析:

前缀和思想: dp(m) - dp(n-1)

用树的角度分析。

比最高位小的, 左分支讨论,等于最高位的进入右分支,(同时进入右分支有条件,就是当前位最大值last <= x(下一位值,此高位).

对于左分支,随便弄,只要后面的大于前面的就行(不会超过n的值)=>这个东西提前算好了,就是f[i][j] i位数,最高位是j,这种情况下满足性质有几位。

符合条件进入右分支。

如果能枚举完,还要加上特殊情况(ans ++);

代码:

#include<bits/stdc++.h>
using namespace std;const int N = 20;
int f[N][N];void init() {for(int i = 0; i <= 9; i ++) f[1][i] = 1;for(int i = 2; i < N; i ++)  // 位数for(int j = 0; j <= 9; j ++)  // 最高位是多少for(int k = j; k <= 9; k ++) // 比最高位大f[i][j] += f[i-1][k]; // 下一位>=j的全加起来
}int dp(int n) {// 特判n == 0,只有0这一种情况,因为n=0 后面循环无法通过存储numsif(!n) return 1;vector<int> nums;while(n) nums.push_back(n%10), n/=10;int ans = 0, last = 0; // 存上一个最大值for(int i = nums.size()-1; i >=0; i --) {int x = nums[i];// 进入右分支条件: x >= last// j >= lastfor(int j = last; j < x; j ++) {ans += f[i+1][j];}if(last>x) break;last = x;// 右子树进入到最后一个右分支,特殊处理(算一种情况)if(!i) ans ++;}return ans;
}int main() {int n, m;init();while(cin >> n >> m) cout << dp(m) - dp(n-1) << endl;return 0;
}


http://www.ppmy.cn/ops/144339.html

相关文章

SMMU软件指南SMMU编程之命令队列

安全之安全(security)博客目录导读 SMMU通过内存中的循环命令队列进行控制。例如&#xff0c;当软件更改STE或翻译时&#xff0c;需要在SMMU中失效相关缓存。这可以通过向命令队列发出相应的失效命令来实现。有关命令类型的详细信息&#xff0c;请参见“命令”部分。 在SMMUv3…

游戏关卡分析:荒野大镖客2雪山终战

1、相关剧情 主角约翰一家在农场过着悠闲的日子&#xff0c;突然平静被打破&#xff0c; 女枪手来报信&#xff0c;在某小镇找到了迈卡的消息。 于是激发了约翰的满腔怒气&#xff0c;不顾妻子的反对&#xff0c;坚决要出战&#xff0c; 要彻底歼灭迈卡&#xff0c;为亚瑟…

MVVM、MVC、MVP 的区别

MVVM&#xff08;Model-View-ViewModel&#xff09;、MVC&#xff08;Model-View-Controller&#xff09;和MVP&#xff08;Model-View-Presenter&#xff09;是三种常见的软件架构模式&#xff0c;它们在客户端应用开发中被广泛使用。每种模式都有其特定的设计理念和应用场景&…

几个常见的Jmeter压测问题

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 根据在之前的压测过程碰到的问题&#xff0c;今天稍微总结总结&#xff0c;以后方便自己查找。 一、单台Mac进行压测时候&#xff0c;压测客户端Jmeter启动超过20…

【Elasticsearch03】企业级日志分析系统ELK之Elasticsearch访问与优化

Elasticsearch 访问 Shell 命令 查看 ES 集群状态 访问 ES #查看支持的指令 curl http://127.0.0.1:9200/_cat #查看es集群状态 集群存活少于半数&#xff0c;无法执行 curl http://127.0.0.1:9200/_cat/health url http://127.0.0.1:9200/_cat/health?v #查看集群分健康…

php各个版本的特性以及绕过方式

一.php各个版本的特性 二.绕过正则匹配的常见方式 1.绕过空格 a.空变量$ l$s b.环境变量IFS&#xff08;默认情况下IFS为空格、制表符和换行符&#xff09; l${IFS}s c.重定向符&#xff08;<,>&#xff09; cat < file.txt //把file.txt的内容给cat命令&…

开源 AI 智能名片小程序源码在个人 IP 打造中的应用与价值

摘要&#xff1a;本文探讨了在个人 IP 打造过程中&#xff0c;开源 AI 智能名片小程序源码所发挥的作用及其价值体现。通过分析个人 IP 打造的内涵与要素&#xff0c;阐述了开源 AI 智能名片小程序源码如何与个人 IP 人设塑造、思想表达、内容输出以及受众定位等方面相结合&…

如何在 echarts 中实现环形图中间的样式自定义

实现效果如图&#xff1a; 主要 series 中的配置&#xff1a; series: [{label: {show: false},emphasis: {label: {show: true,formatter: function(params){return "{name|" params.name "}""\n""{unit|"params.data.rate"}…