首页 > 编程语言 >python 1.卖货

python 1.卖货

时间:2024-03-21 20:29:40浏览次数:30  
标签:记录 python top 卖货 stk ans 列表 dp

问题描述:
小蓝在蓝桥大街开了一家零售店,他将每天的流水记录在电脑上。在每天开始营业时,商店里没有商品。如果他进了一件商品,那就在电脑上记录1,如果卖出了一件商品,就在电脑上记录-1。对于电脑上的记录,有着这样的要求:
1.在一天结束后,要求商品数恰好为0
2.当卖出商品时,商店里必须有商品。
例如111-1-1-1是符合要求的记录,1-1 -1 1是不符合要求的记录。
但是现在小蓝不小心将每一天的记录混合在一起,形成了一个很长的记录,他现在想知道这个记录里面,有多少个记录是合法记录,你可以帮助他吗? 换句话说,这个由1-1构成的序列中,有多少个连续子序列是合法的。


输入格式:

第一行一个n表示总记录的数量
第二行n个由1-1构成的序列

输出格式:
输出一行一个整数,表示合法的连续子序列数量。
样例输入:

样例输出:

import os
import sys

n = int(input())  # 获取一个整数输入

s = list(map(int, input().split(" ")))  # 获取一个以空格分隔的整数列表

n = len(s)  # 更新变量 n 的值为列表 s 的长度

N = int(2e5+10)  # 定义常量 N 的值为 2 * 10^5 + 10

dp = [0] * N  # 初始化一个长度为 N 的列表 dp,每个元素初始值为 0

stk = [0] * N  # 初始化一个长度为 N 的列表 stk,每个元素初始值为 0

top = 0  # 初始化变量 top 的值为 0

ans = 0  # 初始化变量 ans 的值为 0

for i in range(1, n+1):  # 遍历列表 s 的每个元素,i 从 1 到 n+1
    if s[i-1] == 1:  # 如果 s[i-1] 的值为 1
        stk[top+1] = i  # 将 i 存入 stk 列表的下一个位置
        top = top+1  # 增加 top 的值
    elif top > 0:  # 如果 top 的值大于 0
        dp[i] = dp[stk[top]-1] + 1  # 更新 dp[i] 的值为 dp[stk[top]-1] + 1
        top = top-1  # 减小 top 的值
    ans = ans + dp[i]  # 更新 ans 的值为 ans + dp[i]

print(ans)  # 输出变量 ans

标签:记录,python,top,卖货,stk,ans,列表,dp
From: https://blog.csdn.net/2302_77624868/article/details/136917029

相关文章

  • python进行语音分离和说话人识别
    场景:一段音频中有多个说话人,将不同的人说的话分离出来已知一些人的语音特征,跟分离出来的片段,分别求特征的余弦距离,余弦距离最小的作为说话的人安装:pipinstallpyannote.audio# _*_ coding: utf-8 _*_import torchfrom pyannote.audio import Model, Pi......
  • 第十四届蓝桥杯大赛软件赛省赛Python 《三国游戏》
    问题描述问题类型排序,贪心算法。问题分析当第i个事件发生时会分别让X,Y,Z增加Ai,Bi,Ci即当某个事件发生时,三国各增加士兵数Ai,Bi,Ci。如果X,Y,Z的其中一个大于另外两个之和,我们认为其获胜。即当n个事件都确定了是否会发生后,存在X,Y,Z中任一大于另外两个之和,则有其中一个国家获......
  • python scrapy 爬虫爬取quotes.toscrape.com
    1、安装scrapy pip包的管理工具pipinstallscrapy(在cmd中下载)win+r键输入cmd进入命令行2.scrapy介绍它是由五部分组成 引擎 下载器 spider 中间件 管道你只需要知道spider即可因为所有代码都在这里面管道是处理数据的框架定义好接口调用就可以了3.xpa......
  • Python利用Numpy和Pandas实现数据清洗
    利用Numpy和Pandas对数据进行清洗,包括去除重复记录、处理缺失值和异常值,实现代码如下:点击此处下载数据集#coding=utf-8#导入必要的库importpandasaspdimportnumpyasnp#导入数据及输出格式defread_data(filename):data=pd.read_csv(filename)......
  • 《Python从入门到实践》第九章 类
    面向对象编程是最有效的软件编写方法之一在面向对象编程时,你编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。根据类来创建对象称为实例化,这让你能够使用类的实例创建和使用类创建Dog类classDog:"""一次模拟小狗的简单尝试"""def__init__(self,......
  • python代码小题(4)
    #输出等腰三角形i=1whilei<=5:print(""*(5-i),end="")j=1whilej<=2*i-1:print("*",end="")j+=1print("")i+=1#for循环输出9*9乘法表forjinrange(1,10):......
  • Python的特点是什么?
    一、Python的特点是什么?Python是一种广泛使用的编程语言,具有许多引人注目的特点,以下是Python的主要特点:简单易学:Python的语法清晰明了,易于学习,这使得初学者能够快速上手。此外,Python的代码可读性强,易于编写和理解。面向对象:Python支持面向对象的编程范式,这使得开发者能够创建......
  • requests.post传的data如果是直接使用python dict封装,有些服务端接收不了这种数据类型
    平时在自己的php项目里,使用dict方式组装data,然后requests.post,一点问题都没有。但是调了后端一个java的微服务接口,结果就一直报错422: 最后问了一下开发,得到提示“python好像还有个毛病,python的json对象转字符串的时候,转出来的字符串不是标准json字符串,还要做个字符串处理,变成......
  • Python爬虫-数据采集和处理
    文章目录数据数据类型数据分析过程数据采集数据采集源数据采集方法数据清洗清洗数据数据集成数据转换数据脱敏数据《春秋左传集解》云:“事大大其绳,事小小其绳。”体现了早期人类将事情的“大小”这一性质抽象到“绳结大小”这一符号上从而产生数据的过程。数据......
  • Python安全脚本之自动化子域名收集
    声明:本工具仅用于日常学习使用,禁止用于非法域名收集,否则后果由使用者承担!!!在信息收集中少不了一些脚本的辅助,本文将讲解如何编写一个自动化子域名收集脚本代码及注释如下:fromconcurrent.futuresimport*importrequestsbanner='''_________......