windy数(数位dp)

简介: windy数(数位dp)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 34;
int f[N][10];//第i位取j的windy数 max
ll l, r;
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 - 2; k >= 0; k--)
        f[i][j] += f[i - 1][k];
      for (int k = j + 2; k <= 9; k++)
        f[i][j] += f[i - 1][k];
    }
  }
}
ll cal(ll n) {
  if (!n) return 0;
  vector<ll>num;
  while (n) num.push_back(n % 10), n /= 10;
  ll res = 0;
  ll last = -1;
  for (int i = num.size() - 1; i >= 0; i--) {
    int x = num[i];
    for(int j = (i == num.size() - 1) ? 1 : 0;j < x;++j){
  //只要与上一个数的差值大于2,就是合法的windy数
            if(abs(j - last) >= 2)res += f[i + 1][j];
        }
    if ((x <= last + 1 && x >= last - 1)) break;
    last = x;
    if (!i) res++;
  }
  //包含前导零情况
  for(int i = 1;i <= num.size() - 1;++i){
        for(int j = 1;j <= 9;++j){
            res += f[i][j];
        }
    }
  return res;
}
int main() {
  init();
//  for (int i = 1; i <= 3; i++) {
//    for (int j = 0; j <= 9; j++) {
//      printf("f%d%d=%d ", i, j, f[i][j]);
//    }
//    cout << endl;
//  }
    cin>>l>>r;
  cout << cal(r) - cal(l - 1) << endl;
  return 0;
}
/*
25 50
*/
目录
相关文章
|
弹性计算 安全 应用服务中间件
阿里云网络系列之经典网络和专有网络
阿里云面向客户提供的网络类型服务有经典网络和专有网络两种,但这两者有什么区别呢?阿里官网给的解释是: 经典网络:IP地址由阿里云统一分配,配置简便,使用方便,适合对操作易用性要求比较高、需要快速使用 ECS 的用户。
94304 1
|
JavaScript
Parsing error: No Babel config file detected for 。。
Parsing error: No Babel config file detected for 。。
430 3
|
SQL 缓存 PHP
PHP性能优化的科学方法与实践
在追求网站和应用高性能的当下,PHP作为广泛使用的服务器端脚本语言,其性能优化变得尤为重要。本文将基于数据导向和科学严谨的原则,探讨PHP性能优化的有效策略。首先,通过分析PHP运行机制和性能瓶颈,指出优化的必要性;然后,结合最新的研究成果和实验数据,详细介绍代码层面、配置调优、数据库交互以及缓存应用等方面的具体优化措施;最后,以案例形式展示优化效果,并对PHP性能优化的未来趋势进行展望。旨在为开发者提供一套逻辑严密、实证支持的性能提升方法论。
152 27
|
JSON API 开发工具
门槛一降再降,易用性大幅提升!Milvus 2.2.12 持续升级中
近期,Milvus 上线了 2.2.12 版本,此次更新不仅一次性增加了支持 Restful API、召回原始向量、json_contains 函数这三大特性,还优化了 standalone 模式下的 CPU 使用、查询链路等性能,用一句话总结就是:低门槛、高可用、强性能。
406 0
|
存储 算法
嵌入式ARM设计编程(二) 字符串拷贝
嵌入式ARM设计编程(二) 字符串拷贝
189 0
嵌入式ARM设计编程(二) 字符串拷贝
|
消息中间件 Web App开发 运维
通过Serverless架构实现监控告警能力
在实际生产中,我们经常需要做一些监控脚本监控我们的网站服务或者API服务是否可用。传统的方法是通过一些网站监控平台(例如DNSPod监控、360网站服务监控,以及阿里云监控等),这些监控平台的原理是通过用户自己设置要监控的服务地址和监测的时间阈值,由监控平台定期发起请求对网站或服务的可用性进行判断。
304 0
|
自然语言处理 JavaScript 前端开发
JavaScript:Array.splice 与 Array.slice 如何区分
1. splice()方法返回数组中已删除的项,slice()方法返回数组中的选定元素,作为新的数组对象。 2. splice()方法更改原始数组,而slice()方法不更改原始数组。 3. splice()方法可以使用n个参数。 4. slice()方法可以有2个参数。
393 0
|
8天前
|
云安全 人工智能 算法
以“AI对抗AI”,阿里云验证码进入2.0时代
三层立体防护,用大模型打赢人机攻防战
1394 10
|
8天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
1247 5