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 的用户。
94048 1
|
JavaScript
Parsing error: No Babel config file detected for 。。
Parsing error: No Babel config file detected for 。。
288 3
|
SQL 缓存 PHP
PHP性能优化的科学方法与实践
在追求网站和应用高性能的当下,PHP作为广泛使用的服务器端脚本语言,其性能优化变得尤为重要。本文将基于数据导向和科学严谨的原则,探讨PHP性能优化的有效策略。首先,通过分析PHP运行机制和性能瓶颈,指出优化的必要性;然后,结合最新的研究成果和实验数据,详细介绍代码层面、配置调优、数据库交互以及缓存应用等方面的具体优化措施;最后,以案例形式展示优化效果,并对PHP性能优化的未来趋势进行展望。旨在为开发者提供一套逻辑严密、实证支持的性能提升方法论。
120 27
|
JSON API 开发工具
门槛一降再降,易用性大幅提升!Milvus 2.2.12 持续升级中
近期,Milvus 上线了 2.2.12 版本,此次更新不仅一次性增加了支持 Restful API、召回原始向量、json_contains 函数这三大特性,还优化了 standalone 模式下的 CPU 使用、查询链路等性能,用一句话总结就是:低门槛、高可用、强性能。
342 0
|
存储 算法
嵌入式ARM设计编程(二) 字符串拷贝
嵌入式ARM设计编程(二) 字符串拷贝
158 0
嵌入式ARM设计编程(二) 字符串拷贝
|
消息中间件 Web App开发 运维
通过Serverless架构实现监控告警能力
在实际生产中,我们经常需要做一些监控脚本监控我们的网站服务或者API服务是否可用。传统的方法是通过一些网站监控平台(例如DNSPod监控、360网站服务监控,以及阿里云监控等),这些监控平台的原理是通过用户自己设置要监控的服务地址和监测的时间阈值,由监控平台定期发起请求对网站或服务的可用性进行判断。
246 0
|
自然语言处理 JavaScript 前端开发
JavaScript:Array.splice 与 Array.slice 如何区分
1. splice()方法返回数组中已删除的项,slice()方法返回数组中的选定元素,作为新的数组对象。 2. splice()方法更改原始数组,而slice()方法不更改原始数组。 3. splice()方法可以使用n个参数。 4. slice()方法可以有2个参数。
282 0
|
3天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1101 0
|
2天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
461 9