当前位置: 首页 > news >正文

2024蓝桥杯每日一题(前缀和)

一、第一题:壁画

 解题思路:前缀和+贪心枚举
        仔细思考可以发现B值最大的情况是一段连续的长度为n/2上取整的序列的累加和

【Python程序代码】

import math
T = int(input())
for _ in range(1,1+T):n = int(input())s = input()l = math.ceil(len(s)/2)a = [0]for i in s:a.append(int(i))for i in range(1,n+1):a[i]+=a[i-1]res = 0for i in range(l,n+1):res = max(res,a[i]-a[i-l])print("Case #%d: %d"%(_,res))

二、第二题:前缀和

 

解题思路:前缀和
        前缀和模板题

【Python程序代码】

n,m = map(int,input().split())
a = [0] + list(map(int,input().split()))
for i in range(1,n+1):a[i]+=a[i-1]
for i in range(m):l,r = map(int,input().split())print(a[r]-a[l-1])

 三、第三题:子矩阵的和

 

 解题思路:二维前缀和
        二维前缀和模板题

【Python程序代码】

n, m, q = map(int, input().split())
a = [[0] * (m + 1)]
for i in range(n):tep = [0] + list(map(int, input().split()))a.append(tep)
s = [[0] * (m + 5) for _ in range(n + 5)]
for i in range(1, n + 1):for j in range(1, m + 1):a[i][j] += a[i - 1][j] + a[i][j - 1] - a[i - 1][j - 1]
for _ in range(q):x1, y1, x2, y2 = map(int, input().split())res = a[x2][y2] - a[x1 - 1][y2] - a[x2][y1 - 1] + a[x1 - 1][y1 - 1]print(res)

四、第四题: K倍区间

解题思路:前缀和
        先计算数组的前缀和并对k取模后思考如何组成k倍区间

【Python程序代码】

from collections import defaultdict
dic = defaultdict(int)
n,k = map(int,input().split())
a = [0]
for i in range(n):tep = int(input())a.append(tep)
for i in range(1,n+1):a[i] = (a[i]+a[i-1])%k
res = 0
#print(a)
for i in range(0,n+1):res += dic[a[i]]dic[a[i]] += 1
print(res)

五、第五题:统计子矩阵

解题思路:前缀和+双指针优化
        首先对列做前缀和方便后面的优化,从第一行(i)开始遍历,y方向则是(i~n),左指针l每次从1开始,右指针遍历1~m,每次判断(l,r,y)组成的子矩阵,如果当前的值大于k则左指针往右走直到小于k,否则res+=r-l+1.

【Python程序代码】

n,m,k = map(int,input().split())
s = [[0]*(m+1)]
for i in range(n):s.append([0] + list(map(int,input().split())))
for i in range(1,n+1):for j in range(1,m+1):s[i][j] += s[i-1][j]
res = 0
for i in range(1,n+1):for j in range(i,n+1):l = 1sumv = 0for r in range(1,m+1):sumv += s[j][r]-s[i-1][r]while sumv>k:sumv -= s[j][l]-s[i-1][l]l += 1res += r-l+1
print(res)

http://www.lryc.cn/news/313790.html

相关文章:

  • 2007-2022年上市公司迪博内部控制评价缺陷数量数据
  • JAVA虚拟机实战篇之内存调优[4](内存溢出问题案例)
  • qt自定义时间选择控件窗口
  • 如何不解压直接读取gzip文件里面的文件
  • python 截取字符串string.split
  • SpringBoot+Vue实现el-table表头筛选排序(附源码)
  • Linux学习之线程
  • 【JavaEE初阶】 JVM类加载简介
  • .NET Core依赖注入(IoC)不使用构造函数实现注入
  • WinSCP下载安装并结合内网穿透实现固定公网TCP地址访问本地服务器
  • 内联函数|auto关键字|范围for的语法|指针空值
  • 家用洗地机哪个型号好用?介绍几个值得考虑的品牌
  • 力扣-数组题
  • 将List转换为数组或者将数组转换为List,如果改变了原始值,转换后的数据会发生改变吗?
  • 七彩虹@电脑cpu频率上不去问题@控制中心性能模式cpu频率上不去@代理服务器超时@账户同步设置失败
  • 抖音怎么开店?抖音小店开店流程讲解,可收藏!
  • leetcode 热题 100_轮转数组
  • 华为设备小型园区网方案(有线+无线+防火墙)
  • 硬件工程师入门基础知识(四)多层陶瓷电容应用(一)
  • python的虚拟环境
  • 设计模式——2_4 中介者(Mediator)
  • C语言教程(一)——输出、数据类型、表达式、条件判断、循环
  • Prompt Engineering、Finetune、RAG:OpenAI LLM 应用最佳实践
  • [C语言]——分支和循环(4)
  • 【LeetCode】392. 判断子序列(简单)——代码随想录算法训练营Day54
  • 1. Typescript入门
  • 【Git】merge时报错:refusing to merge unrelated histories
  • 树状数组+离散化求逆序对超详细讲解!
  • 《解密云计算:企业之选》
  • 地址分词 | EXCEL批量进行地址分词,标准化为十一级地址