首页 > 其他分享 >P9232 [蓝桥杯 2023 省 A] 更小的数

P9232 [蓝桥杯 2023 省 A] 更小的数

时间:2024-04-08 10:55:35浏览次数:16  
标签:5010 ch int P9232 蓝桥 2023 include DP

暴力

直接暴力枚举区间,并且逐个判断

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <string>
#include <cmath>
#define R(x) x = read()
#define For(i, j, n) for(int i = j ; i <= n ; ++i)
using namespace std;

inline int read()
{
    int x = 0, f = 1; char ch = getchar();
    while(ch < '0' || ch > '9')
    {
        if(ch == '-') f = -1;
        ch = getchar();
    }
    while(ch >= '0' && ch <= '9')
    {
       x = x * 10 + ch - '0';
       ch = getchar();
    }
     return x * f;
}

const int N = 5005;

char s[N];

bool check(int l, int r)
{
    int i = l, j = r;
    while(i < j)
        if(s[i] == s[j])
        {
            i++;
            j--;
        }
        else
            return s[j] < s[i];
    return 0;
}

int solve()
{
    int res = 0;
    int Len = strlen(s);
    for(int l = 0; l < Len - 1; l++)
        for(int r = l + 1; r < Len; r++)
            if(check(l, r))
                res++;
    return res;
}

int main()
{
    scanf("%s", s);
    printf("%d\n", solve());
    return 0;
}

期望复杂度O(n^3),但是因为这道题数据比较水,check函数退出的时间比较早,这种做法居然过了。

区间DP

一开始看到5000级别的数据范围,就直接定势思维地放弃了区间DP的想法。

因为传统的区间DP需要枚举断点,时间复杂度是O(n^3)

但是这道题比较特殊,它不需要枚举断点,只要整个区间处理即可。

大佬题解:

P9232 [蓝桥杯 2023 省 A] 更小的数 - 洛谷专栏 (luogu.com.cn)

代码:

#include<bits/stdc++.h>
using namespace std;
char s[5010];int dp[5010][5010];
int main(){
    scanf("%s",s);int n=strlen(s),ans=0;
    for(int i=0;i<n;i++) dp[i][i]=0;
    for(int i=0;i<n-1;i++) dp[i][i+1]=(s[i]>s[i+1]);//初始值
    for(int len=3;len<=n;len++){
        for(int i=0;i<n-len+1;i++){
            int j=i+len-1;
            if(s[i]==s[j]) dp[i][j]=dp[i+1][j-1];
            else if(s[i]>s[j]) dp[i][j]=1;
        }
    }
    for(int i=0;i<n;i++)
        for(int j=i;j<n;j++) ans+=dp[i][j];//求总数
    printf("%d",ans);
    return 0;
}

 

标签:5010,ch,int,P9232,蓝桥,2023,include,DP
From: https://www.cnblogs.com/smartljy/p/18120655

相关文章

  • 蓝桥杯-算法赛第9场强者:贝贝的2.0
    题意:n个节点的有根树,问孩子节点最少是多少,可以满足任意两条长度为k的链有公共节点。思路:一开始想的是以根为中间点,然后构造边。但是发现样例过不了,样例说的很清楚,根节点也作为一个叶子节点去构造,然后把叶子节点作为中间点(这样可以省去一个叶子节点的计数)。最后就是如何处理的问题......
  • 2023年蓝桥杯省赛——买二赠一
    目录题目链接:1.买二赠一-蓝桥云课(lanqiao.cn)题目描述输入格式输出格式样例输入样例输出样例说明思路队列+贪心代码实现总结题目链接:1.买二赠一-蓝桥云课(lanqiao.cn)题目描述        某商场有N件商品,其中第i件的价格是Ai。现在该商场......
  • 蓝桥杯嵌入式2023年第十四届省赛主观题解析
    1 题目2 代码/*Includes------------------------------------------------------------------*/#include"main.h"#include"adc.h"#include"rtc.h"#include"tim.h"#include"gpio.h"/*Privateinclud......
  • 蓝桥杯练习系统(算法训练)ALGO-963 转圈游戏
    资源限制内存限制:128.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s问题描述n个小伙伴(编号从0到n-1)围坐一圈玩游戏。按照顺时针方向给n个位置编号,从0到n-1。最初,第0号小伙伴在第0号位置,第1号小伙伴在第1号位置,……,依此类推。游戏规......
  • 蓝桥杯练习系统(算法训练)ALGO-962 积木大赛
    资源限制内存限制:128.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s问题描述THU幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi。在搭建开始......
  • 蓝桥杯—DS1302
    目录1.管脚2.时序&官方提供的读写函数3.如何使用读写函数4.如何在数码管中显示在DS1302中读取出的数据?1.管脚2.时序&官方提供的读写函数/* # DS1302代码片段说明 1. 本文件夹中提供的驱动代码供参赛选手完成程序设计参考。 2. 参赛选手可以自行编写相关代码或......
  • 洛谷B3835 [GESP202303 一级] 每月天数
    这道题是让我们输出给定的月份有多少天#include<bits/stdc++.h>usingnamespacestd;intmain(){ intyear,month;cin>>year>>month;if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){cout<<31;......
  • 洛谷B3840 [GESP202306 二级] 找素数
    这道题让我们找A 和 B 之间(包括 A 和 B)有多少个素数。#include<bits/stdc++.h>usingnamespacestd;boolisprime(intn){if(n==0||n==1)returnfalse;for(inti=2;i*i<=n;i++){if(n%i==0)returnfalse;}returntrue;}intmain(){......
  • 『Dynamo教程目录整理2023.01』BIM的乐趣By九哥
    你好,我是九哥~经常发现,很多小伙伴问的问题,其实以前文章里都讲过,所以为了方便小伙伴们查找和学习,我将公众号里的Dynamo相关文章整理了出来,查找资料就不用来回的翻历史记录了~一、基础教程Dynamo初学常识梳理Dynamo初学常识梳理(二)Dynamo初学常识梳理(三)——节点Dyna......
  • 螺旋矩阵(蓝桥杯-Python)
    importosimportsys#请在此输入您的代码n,m=input().split()n=int(n)m=int(m)arr=[[0forjinrange(m)]foriinrange(n)]r,c=input().split()r=int(r)c=int(c)defdo_l():globaln,m,r,c,arr#四个方向#右下左上......