蓝桥杯更小的数(区间DP)

news/2025/2/7 1:45:19/

题目描述


小蓝有一个长度均为 n 且仅由数字字符 0 ∼ 9 组成的字符串,下标从 0 到 n − 1,你可以将其视作是一个具有 n 位的十进制数字 num,小蓝可以从 num 中选出一段连续的子串并将子串进行反转,最多反转一次。小蓝想要将选出的子串进行反转后再放入原位置处得到的新的数字 numnew 满足条件 numnew < num,请你帮他计算下一共有多少种不同的子串选择方案,只要两个子串在 num 中的位置不完全相同我们就视作是不同的方案。注意,我们允许前导零的存在,即数字的最高位可以是 0 ,这是合法的

输入格式:输入一行包含一个长度为 n 的字符串表示 num(仅包含数字字符 0 ∼ 9),从左至右下标依次为 0 ∼ n − 1。

输出格式:输出一行包含一个整数表示答案。

输入:210102
输出:8

提示
一共有 8 种不同的方案:

1)所选择的子串下标为 0 ∼ 1 ,反转后的 numnew = 120102 < 210102 ;

2)所选择的子串下标为 0 ∼ 2 ,反转后的 numnew = 012102 < 210102 ;

3)所选择的子串下标为 0 ∼ 3 ,反转后的 numnew = 101202 < 210102 ;

4)所选择的子串下标为 0 ∼ 4 ,反转后的 numnew = 010122 < 210102 ;

5)所选择的子串下标为 0 ∼ 5 ,反转后的 numnew = 201012 < 210102 ;

6)所选择的子串下标为 1 ∼ 2 ,反转后的 numnew = 201102 < 210102 ;

7)所选择的子串下标为 1 ∼ 4 ,反转后的 numnew = 201012 < 210102 ;

8)所选择的子串下标为 3 ∼ 4 ,反转后的 numnew = 210012 < 210102 ;

对于 20% 的评测用例,1 ≤ n ≤ 100 ;对于 40% 的评测用例,1 ≤ n ≤ 1000 ;对于所有评测用例,1 ≤ n ≤ 5000 。

思路:

首先,子串的左右端点以及它的长度不确定,而右端点=左端点+长度,因此可以写两层for循环得到子串的大小和位置。接着,如果是暴力做法,意味着每次要翻转字串o(n)再比较o(n**3),如果是DP,则要找状态转移方程o(1),一共是o(n**2)。这里DP要分情况讨论,f[l][r]表示左端点为l右端点为r的区间经过反转之后是否能符合题意,如果可以则为1,不可以则为0,最后要求的答案就是f[l][r]的加和。

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);string s;cin>>s;int ans=0;int N=s.size();int f[N][N]; for(int i=2;i<s.size();i++){for(int l=0;l<s.size()-i-1;l++){int r=l+i;if(s[l]>s[r]) f[l][r]=1;if(s[l]==s[r]) f[l][r]=f[l+1][r-1];else f[l][r]=0;ans+=f[l][r];}}cout<<ans<<endl;} 


http://www.ppmy.cn/news/1569956.html

相关文章

面向智慧农业的物联网监测系统设计(论文+源码+实物)

1系统方案设计 根据系统功能的设计要求&#xff0c;展开面向智慧农业的物联网监测系统设计。如图2.1所示为系统总体设计框图。系统采用STM32单片机作为系统主控核心&#xff0c;利用YL-69土壤湿度传感器、光敏传感器实现农作物种植环境中土壤湿度、光照数据的采集&#xff0c;系…

【llm对话系统】大模型 Llama、Qwen 和 ChatGLM 的网络结构和训练方法对比

1. 引言 近年来,大型语言模型 (LLM) 取得了令人瞩目的进展,其中 Llama、Qwen 和 ChatGLM 是三个备受关注的开源模型。它们都在 Transformer 架构的基础上进行了改进和优化,并在各种 NLP 任务上取得了优异的性能。 本文将深入分析 Llama、Qwen 和 ChatGLM 的网络结构和训练…

css中字体的加载,仅在使用的时候加载,会阻塞,用font-display:swap

在 font-face 中指定字体的 src URL时&#xff0c;字体文件仅会在实际使用该 font-family 的时候加载。也就是说&#xff0c;如果你没有在页面上使用该字体&#xff08;即没有设置 font-family 为指定的字体&#xff09;&#xff0c;浏览器不会加载那个字体文件。 但是如果系统…

【机器学习】自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数

一、使用pytorch框架实现逻辑回归 1. 数据部分&#xff1a; 首先自定义了一个简单的数据集&#xff0c;特征 X 是 100 个随机样本&#xff0c;每个样本一个特征&#xff0c;目标值 y 基于线性关系并添加了噪声。将 numpy 数组转换为 PyTorch 张量&#xff0c;方便后续在模型中…

pytorch生成对抗网络

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 生成对抗网络&#xff08;GAN&#xff0c;Generative Adversarial Network&#xff09;是一种深度学习模型&#xff0c;由两个神经网络组成&#xff1a;生成器&#xff08;Generator&#xff09;和判别器&#xff0…

ES6 变量解构赋值总结

1. 数组的解构赋值 1.1 基本用法 // 基本数组解构 const [a, b, c] [1, 2, 3]; console.log(a); // 1 console.log(b); // 2 console.log(c); // 3// 跳过某些值 const [x, , y] [1, 2, 3]; console.log(x); // 1 console.log(y); // 3// 解构剩余元素 const [first, ...re…

day37|完全背包基础+leetcode 518.零钱兑换II ,377.组合总和II

完全背包理论基础 完全背包与01背包的不同在于01背包的不同物品每个都只可以使用一次&#xff0c;但是完全背包的不同物品可以使用无数次 在01背包理论基础中&#xff0c;为了使得物品只被使用一次&#xff0c;我们采取倒序遍历来控制 回顾&#xff1a;>> for(int j …

STM32 DMA数据转运

DMA简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预&#xff0c;节省了CPU的资源 12个独立可配置的通道&#xff1a; DMA1&#xff08;7个通道&#xff09;&#xf…