蓝桥杯练习题——贡献法(隔板法)

2024-03-19 00:28
文章标签 练习题 蓝桥 贡献 隔板

本文主要是介绍蓝桥杯练习题——贡献法(隔板法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.孤独的照片

在这里插入图片描述
在这里插入图片描述

思路

孤独的区间一定有一头孤独的牛,考虑每头牛对区间的贡献是多少
在这里插入图片描述

#include<iostream>
using namespace std;
const int N = 5e5 + 10;
int n;
string s;int main(){cin>>n>>s;long long res = 0;for(int i = 0; i < n; i++){int l = i - 1, r = i + 1;// 向左扩展while(l >= 0 && s[l] != s[i]) l--;// 向右扩展while(r < n && s[r] != s[i]) r++;// 更新左右部分int L = i - l - 1, R = r - i - 1;res += 1ll * L * R;if(L >= 1) res += L - 1;if(R >= 1) res += R - 1;}cout<<res;return 0;
}

2.子串分值

在这里插入图片描述
在这里插入图片描述

思路

考虑每一个字符对答案的贡献
在这里插入图片描述

#include<iostream>
#include<cstring>
using namespace std;
const int N = 1e5 + 10;
int w[26], l[N], r[N];
char s[N];int main(){// 下标从 1 开始cin>>(s + 1);int n = strlen(s + 1);// 统计左边的边界for(int i = 0; i < 26; i++) w[i] = 0;for(int i = 1; i <= n; i++){int t = s[i] - 'a';l[i] = w[t];w[t] = i;}// 统计右边的边界for(int i = 0; i < 26; i++) w[i] = n + 1;for(int i = n; i >= 1; i--){int t = s[i] - 'a';r[i] = w[t];w[t] = i;}long long res = 0;for(int i = 1; i <= n; i++) res += 1ll * (i - l[i]) * (r[i] - i);cout<<res;return 0;
}

这篇关于蓝桥杯练习题——贡献法(隔板法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/824193

相关文章

dp算法练习题【8】

不同二叉搜索树 96. 不同的二叉搜索树 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n = 3输出:5 示例 2: 输入:n = 1输出:1 class Solution {public int numTrees(int n) {int[] dp = new int

C语言蓝桥杯

一、语言基础 竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_s

C语言练习题之 数组中出现次数超过一半的数

题目描述 给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。 数据范围:n≤50000,数组中元素的值0≤val≤10000 要求:空间复杂度:O(1),时间复杂度O(n) 输入描述: 保证数组输入非空,且保证有

算法练习题17——leetcode54螺旋矩阵

题目描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。  代码 import java.util.*;class Solution {public List<Integer> spiralOrder(int[][] matrix) {// 用于存储螺旋顺序遍历的结果List<Integer> result = new ArrayList

找不同-第15届蓝桥省赛Scratch初级组真题第4题

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第183讲。 如果想持续关注Scratch蓝桥真题解读,可以点击《Scratch蓝桥杯历年真题》并订阅合集,查阅教程更方便。 第15届蓝桥杯省赛已于2024年8月24日落下帷幕,编程题一共有5题,分别如下: 猪八戒落地 游乐场 画西瓜 找不同 消

【蓝桥杯嵌入式(一)程序框架和调度器】

蓝桥杯嵌入式(一)程序框架和调度器 序、代码命名规则零、STM32和8051⼀、软件及环境安装⼆、⼯程框架搭建1.时钟配置2、SYS配置3、⼯程配置4、NVIC配置5.、Keil配置 三、系统初始化四、任务调度器 链接: 视频出处 序、代码命名规则 以下是一些常见的举例 零、STM32和8051 链接: 8位和32位单片机最本质区别 ⼀、软件及环境安装

【蓝桥杯嵌入式(二)Led、Key、Lcd】

蓝桥杯嵌入式(二)Led、Key、Lcd 五、Led模块1.原理图配置2. 知识点3.底层代码 六、Key模块1.原理图配置2.知识点3.底层代码底层代码(四⾏代码版本)底层代码(状态机版本) 七、LCD模块1.原理图配置2.知识点底层代码 五、Led模块 1.原理图配置 2. 知识点 链接: 上拉电阻的通俗解释 链接: 单⽚机怎么输出⾼电平!推挽输出和开

蓝桥杯:整数删除

// 蓝桥杯整数删除.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<stdio.h>#define MAX 100void findmin(int a[],int n,int& pos){int min=a[0];pos=0;//pos=0我开始忘了,特别注意

第十五届蓝桥杯图形化省赛题目及解析

第十五届蓝桥杯图形化省赛题目及解析 一. 单选题 1. 运行以下程序,角色会说( )? A、29     B、31     C、33     D、35 正确答案:C 答案解析: 重复执行直到m>n不成立,即重复执行直到m<=n。所有当m小于或者 等于n时,循环结束。循环过程中变量m与变量n的变化如下表: 通过上述表格可知,循环到第五次循环结束。m的值为14,n的值为19

Python练习题——站队顺序输出

题目来源:Python语言程序设计(中国大学MOOC) 题目描述: 有一群人站队,每人通过一对整数(h, k)来描述,其中h表示人的高度,k表示在此人前面队列中身高不小于此人的总人数。 实现一个算法输出这个队列的正确顺序。 输入格式: 输入格式为二维列表,即 list[list[]]形式 外层list包含队列中全部的人,内层list为[h,k]格式,代表个人信息。 输出格式: 输