学习python第一天---前缀和

news2024/11/25 18:45:11

  • 一、3956.截断数组(前缀和)
  • 二、前缀和(前缀和)
      • [0]+list(map(int,input().split()))
  • 三、子矩阵的和(前缀和)
      • range(1,n+1)
  • 四、K倍区间(前缀和)
  • 五、激光炸弹(前缀和)
      • a=[[0]*5002 for _ in range(5002)]

一、3956.截断数组(前缀和)

在这里插入图片描述
*** 题意:***
要求将一个数组切两刀,分成三份,然后这三份的数组元素和相同。
*** 思路:***
运用前缀和,枚举第一刀出现的位置,如果出现的位置前缀和为2/3sum,那么说明这里可以切一刀,为第二刀,并加上第一刀有多少种切法;如果前缀和为1/3sum,那么说明可以切一道,为第一刀。

n=int(input())#input的返回类型是str
a=list(map(int,input().split()))
s=sum(a)
if s%3:#不能被3整除说明不行
    print(0)
else:
    p=ans=pre=0
    for i in range(n-1):#i是第三段的起点,cnt表示有多少个j满足要求
        pre+=a[i]
        if pre==s*2//3:#'//'除完之后只取整数部分
            ans+=p
        if pre==s//3:
            p+=1
    print(ans)

二、前缀和(前缀和)

在这里插入图片描述
这道题目是典型的前缀和,记住这个板子好啦。

[0]+list(map(int,input().split()))

Python中的表达式[0]用于创建一个包含单个元素的列表,该元素为整数0。当您将[0]与+运算符组合时,它将此列表与list(map(int,input().split())表达式的结果连接起来。

在Python中,input()函数从标准输入(通常是键盘)中读取一行文本,字符串的split()方法根据分隔符将字符串拆分为子字符串列表。split()使用的分隔符默认为空格,因此input().split()将输入行分割为一个由空格分隔的字符串列表。

map()函数对split()返回的列表中的每个字符串应用int()函数,生成一个整数列表。

因此,当你将[0]和+运算符组合在一起时,你创建了一个新的列表,它由整数0和map(int,input().split())生成的整数列表组成。在列表开头添加整数0的目的可能取决于代码的上下文,但它可能用作占位符或标记值。

n,m=map(int,input().split())
pre=[0]+list(map(int,input().split()))#一维数组的读取
for i in range(1,n+1):
    pre[i]+=pre[i-1]
for _ in range(m):
    l,r=map(int,input().split())
    print(pre[r]-pre[l-1])

三、子矩阵的和(前缀和)

在这里插入图片描述
典型的二维前缀和

range(1,n+1)

当在Python中使用range()函数时,它会返回一个数字序列,默认从0开始递增1,直到一个指定的数字之前停止。
因此,当使用range(1, n+1)时,它将生成一个数字序列,从1开始,到n为止(包括n),即它将生成数字1、2、3、…、n。
请注意,range()中指定的上限总是在序列中排除,这意味着最后生成的数字将是n,而不是n + 1。

n,m,q=map(int,input().split())#n行m列的矩阵,q次询问
a=[[0] for i in range(n+1)]#先构造一个一维数组
a[0]=[0]*(m+1)#m行矩阵
for i in range(1,n+1):
    a[i]+=list(map(int,input().split()))#读入
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())
    print(a[x2][y2]+a[x1-1][y1-1]-a[x2][y1-1]-a[x1-1][y2])#二维前缀和

四、K倍区间(前缀和)

在这里插入图片描述
如果(a[i]-a[j])%k=0,说明这两个%k的余数是相等的。

n,k=map(int,input().split())#n行m列的矩阵,q次询问
s=[0]
for i in range(1,n+1):
    s.append(int(input()))
    s[i]+=s[i-1]
cnt=[0]*k
cnt[0]+=1#处理s[0]=0的这种情况,后面是从1开始的,就要先把s[0]放进去
res=0
for i in range(1,n+1):
    res+=cnt[s[i]%k]
    cnt[s[i]%k]+=1
print(res)

五、激光炸弹(前缀和)

在这里插入图片描述

a=[[0]*5002 for _ in range(5002)]

这行代码创建了一个名为a的二维列表,列表的行数和列数均为5002,且每个元素都被初始化为0。换句话说,这个列表是一个5002x5002的矩阵,可以用来存储二维数据。

(n,r),N,res=map(int,input().split(' ')),0,0
a=[[0]*5002 for _ in range(5002)]
for _ in range(n):
    x,y,w=map(int,input().split(' '))
    N=max(N,x+1,y+1)
    a[x+1][y+1]+=w

for i in range(1,N+1):#预处理前缀和数组
    for j in range(1,N+1):
        a[i][j]+=a[i-1][j]+a[i][j-1]-a[i-1][j-1]

if r<N:#枚举所有边长是R的矩形,枚举(i,j)为右下角
    for i in range(r,N+1):
        for j in range(r,N+1):
            res=max(res,a[i][j]-a[i-r][j]-a[i][j-r]+a[i-r][j-r])
else:
    res=a[N][N]

print(res)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/373514.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模型部署笔记

目录模型部署工作ONNX存在的意义ONNX&#xff08;Open Neural Network Exchange&#xff09;ONNX示例模型推理示例Batch调整量化量化方式常见问题模型部署工作 训练好的模型在特定软硬件平台下推理针对硬件优化和加速的推理代码 训练设备平台&#xff1a; CPU、GPU、DSP ONN…

2023.02.26 学习周报

文章目录摘要文献阅读1.题目2.摘要3.介绍4.模型4.1 SESSION-PARALLEL MINI-BATCHES4.2 SAMPLING ON THE OUTPUT4.3 RANKING LOSS5.实验5.1 数据集5.2 验证方式5.3 baselines5.4 实验结果6.结论深度学习元胞自动机1.定义2.构成3.特性4.思想5.统计特征流形学习1.降维2.空间3.距离…

一些硬件学习的注意事项与快捷方法

xilinx系列软件 系统适用版本 要安装在Ubuntu系统的话&#xff0c;要注意提前看好软件适用的版本&#xff0c;不要随便安好了Ubuntu系统又发现对应版本的xilinx软件不支持。 如下图&#xff0c;发行说明中会说明这个版本的软件所适配的系统版本。 下载 vivado vitis这些都可以…

IT男的一次中年破局尝试--出书

一、转战外企 接上回《人到中年——IT男择业感悟》后&#xff0c;自己从大央企去了某知名外企。外企虽然最近几年的日子已经没有10年前的辉煌与滋润&#xff0c;但相对来说&#xff0c;还能勉强找到工作与生活的平衡点。 划重点&#xff0c;35岁上下的人换工作理由&#xf…

SpringBoot+React博客论坛系统 附带详细运行指导视频

文章目录一、项目演示二、项目介绍三、项目运行截图四、主要代码一、项目演示 项目演示地址&#xff1a; 视频地址 二、项目介绍 项目描述&#xff1a;这是一个基于SpringBootReact框架开发的博客论坛系统。首先&#xff0c;这是一个前后端分离的项目&#xff0c;文章编辑器…

大学物理期末大题专题训练总结-磁学大题

&#xff08;事先声明指的是简单的那个磁学大题&#xff0c;另外一类涉及储存的磁能、磁感应强度分布下次说&#xff09;求个磁通量&#xff0c;求个感应电动势&#xff0c;求个安培力大小......这个感觉是不是像你梦回高中&#xff1f;当然&#xff0c;这一块大题跟高中磁学部…

hadoop-Combiner合并、OutputFormat

一、Combiner合并 Combiner是MR程序中Mapper和Reducer之外的一种组件。 2&#xff09;Combiner组件的父类就是Reducer 3&#xff09;Combiner和Reducer的区别在与运行的位置&#xff1b;Combiner是在每一个MapTask所在的节点运行&#xff1b;Reducer是接收全局所有Mapper的输出…

c++11 标准模板(STL)(std::unordered_set)(九)

定义于头文件 <unordered_set>template< class Key, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator<Key> > class unordered_set;(1)(C11 起)namespace pmr { templat…

Linux学习(8.5)文件内容查阅

目录 文件内容查阅&#xff1a; 直接检视文件内容 cat (concatenate) tac (反向列示) nl (添加行号列印) 可翻页检视 more (一页一页翻动) less (一页一页翻动) 数据撷取 tail (取出后面几行) 非纯文字档&#xff1a; od 修改文件时间或建置新档&#xff1a; touc…

数据结构(六)二叉树

一、树形结构概念树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。它具有以下的特点&#xff1a;1、有一个…

昇腾AI新技能,还能预防猪生病?

国药集团动物保健股份有限公司&#xff08;简称“国药动保”&#xff09;是专业从事动物保健产品研发、生产和销售的国家高新技术企业&#xff0c;是国内少数几家具备新产品原创能力的动物保健企业。其中&#xff0c;猪圆环病毒灭活疫苗等市场份额位居行业前列。 “猪圆环病毒…

【Linux学习笔记】8.Linux yum 命令和apt 命令

前言 本章介绍Linux的yum命令和apt命令。 Linux yum 命令 yum&#xff08; Yellow dog Updater, Modified&#xff09;是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。 基于 RPM 包管理&#xff0c;能够从指定的服务器自动下载 RPM 包并且安装&#xf…

一种全新的图像滤波理论的实验(三)

一、前言 2023年02月22日&#xff0c;我发布了滤波后&#xff0c;为针对异常的白色和黑色像素进行处理的实验&#xff0c;本次发布基于上下文处理的方案的实验&#xff0c;目的是通过基于加权概率模型滤波后&#xff0c;在逆滤波时直接修复大量的白色和黑色的异常像素&#xf…

html css输入框获得焦点、失去焦点效果

input输入框获得焦点、失去焦点效果 废话shao shuo ! 直接看效果图&#xff0c;好吧&#xff01; 效果图&#xff1a; code: <!DOCTYPE html> <html> <head><title></title><meta charset"utf-8" /><style type"text…

电子统计台账:海量数据中导入特定行,极力减少键盘编辑工作量

1 前言从事企业统计工作的小伙伴&#xff0c;本来已经够忙的了&#xff0c;现在又要加上什么电子台账这种鬼任务&#xff0c;而且居然还要每月来一次&#xff0c;简直不能忍。如果非要捏着鼻子忍了&#xff0c;那么有什么办法&#xff0c;减轻工作量&#xff1f;2 问题的提出有…

应用场景五: 西门子PLC通过Modbus协议连接DCS系统

应用描述&#xff1a; 西门子PLC&#xff08;S7200/300/400/200SMART&#xff09;通过桥接器可以支持ModbusRTU串口和ModbusTCP以太网&#xff08;有线和无线WIFI同时支持&#xff09;两种通讯方式连接DCS系统&#xff0c;不需要编程PLC通讯程序&#xff0c;直接在模块中进行地…

【数据库】第九章 关系查询处理与优化

第九章 关系查询处理与优化 索引 索引文件是一种辅助存储结构&#xff0c;其存在与否不改变存储表的物理存储结 构&#xff1b;然而其存在&#xff0c;可以明显提高存储表的访问速度。 索引文件组织方式有两种&#xff1a;(相对照的&#xff0c;主文件组织有堆文件、排序文件、…

Python3-字符串

Python3 字符串 字符串是 Python 中最常用的数据类型。我们可以使用引号( ’ 或 " )来创建字符串。 创建字符串很简单&#xff0c;只要为变量分配一个值即可。 Python 访问字符串中的值 Python 不支持单字符类型&#xff0c;单字符在 Python 中也是作为一个字符串使用…

行测-判断推理-图形推理-位置规律-旋转、翻转

短指针每次逆时针旋转60&#xff08;排除法选C走人&#xff09;长指针每次顺时针旋转120选C左上菱形每次顺时针旋转90&#xff08;排除C D&#xff09;右上每次旋转180&#xff08;选B走人&#xff09;左下每次保持不变右下每次逆时针旋转90选B左上和右上为左右翻转&#xff0c…

结合JasperReports输出报表

结合JasperReports输出报表 前面我们已经使用Jaspersoft Studio设计了两个模板文件&#xff1a;demo1.jrxml和demo2.jrxml。其中demo1.jrxml的动态列表数据是基于JDBC数据源方式进行数据填充&#xff0c;demo2.jrxml的动态列表数据是基于JavaBean数据源方式进行数据填充。本小节…