2018年蓝桥杯省赛试题-5道(Python)

news2024/9/23 5:28:47

文章目录

  • 一、日志统计
    • 思考
  • 二、递增三元组
    • 思考
  • 三、螺旋折线
    • 思考
  • 四、乘积最大
    • 思考
  • 五、全球变暖
    • 思考
  • 尾声



提示:以下是本篇文章正文内容,下面案例可供参考

一、日志统计

题目描述
小明维护着一个程序员论坛。
现在他收集了一份"点赞"日志,日志共有 N 行。其中每一行的格式是:
ts id
表示在 ts 时刻编号 id 的帖子收到一个"赞"。

现在小明想统计有哪些帖子曾经是"热帖"。
如果一个帖子曾在任意一个长度为 D 的时间段内收到不少于 K 个赞,
小明就认为这个帖子曾是"热帖"。
具体来说,如果存在某个时刻 T 满足该帖在
[T,T+D) 这段时间内**(注意是左闭右开区间)**收到不少于 K 个赞,该帖就曾是"热帖"。
给定日志,请你帮助小明统计出所有曾是"热帖"的帖子编号。
在这里插入图片描述
在这里插入图片描述

思考

以python角度来处理问题
首先输入的话,input接受参数,外套map来接受多个参数,并指定为int型

N, D, K = list(map(int, input().split()))

然后通过传入的n确定循环次数,将帖子时间和id用列表存储

whole = []
for i in range(N):
    whole.append(list(map(int, input().split())))

接着使用defaultdict来将键-值对序列转换为列表字典
collections.defaultdict()的使用

d = collections.defaultdict(list)
for i in whole:
    d[i[1]].append(i[0])

在这里插入图片描述

Python中通过Key访问字典,当Key不存在时,会引发‘KeyError’异常。为了避免这种情况的发生,可以使用collections类中的defaultdict()方法来为字典提供默认值。

解读以下代码

for key, value in d.items():
    if len(value) < K:
        continue

    temp = []
    value.sort()
    for i in value:
        temp.append(i)
        while i - temp[0] >= D:
            temp.pop(0)
        if len(temp) >= K:
            result.append(key)
            break

先进行if判断,如果出现的时间点个数都少于所需赞的个数,那后续更难满足其条件了

    if len(value) < K:
    	continue

之后的代码逻辑我是这样理解的
遍历循环时,temp存储临时的ts
while判断i和临时ts之间的差值是否大于题目时间要求,超过则pop出栈顶元素,也就是第一个元素

for i in value:
        temp.append(i)
        while i - temp[0] >= D:
            temp.pop(0)

这样最后的列表temp若存储个数能超过或等于K,说明满足要求
用result列表存储

完整代码

import collections
result = []
N, D, K = list(map(int, input().split()))
whole = []
for i in range(N):
    whole.append(list(map(int, input().split())))

d = collections.defaultdict(list)
for i in whole:
    d[i[1]].append(i[0])

print(d.items())
for key, value in d.items():
    if len(value) < K:
        continue

    temp = []
    value.sort()
    for i in value:
        temp.append(i)
        while i - temp[0] >= D:
            temp.pop(0)
        if len(temp) >= K:
            result.append(key)
            break

result.sort()
for i in result:
    print(i)

二、递增三元组

思考

import os
import sys
import bisect

# 请在此输入您的代码
N = eval(input())
a = sorted(list(map(int,input().split())))
b = sorted(list(map(int,input().split())))
c = sorted(list(map(int,input().split())))

s = 0
for i in range(N):
  n1 = bisect.bisect_left(a,b[i])
  n2 = N-bisect.bisect_right(c,b[i])
  s+=n1*n2
print(s)

三、螺旋折线

思考

import os
import sys

# 请在此输入您的代码
x,y=map(int,input().split())
n=max(abs(x),abs(y))
if x==-n or y==n:
    t=n*(n*4-2)+x+y
elif x==n or y==-n:
    t=n*(n*4+2)-x-y
print(t)

四、乘积最大

思考

mo=int(1e9+9)
def mod(x):
    if x<0:return -((-x)%mo)
    return x%mo
n,k=map(int,input().split())
a=[]
for i in range(n):a.append(int(input()))
a.sort()
l,r=0,n-1
ans=1
sign=1
if k%2:
    ans=a[r]
    r-=1
    k-=1
    if ans<0:sign=-1
while k:
    x,y=a[l]*a[l+1],a[r]*a[r-1]
    if x*sign>=y*sign:
        ans*=x       
        l+=2
    else:
        ans*=y
        r-=2
    ans=mod(ans)
    k-=2
print(ans)

五、全球变暖

思考

import os
import sys

sys.setrecursionlimit(1000000)  # 修改深度限制,否则会出现段错误!!!ex死我了
n = int(input())
highlands = 0
islands = 0
note = [[0] * n for _ in range(n)]
flag = 0  # 确保回溯时重复确认highlands
picture = []
move = [[1, 0], [-1, 0], [0, 1], [0, -1]]
for i in range(n):
    picture.append(input())

print(picture)
print(note)

def DFS(x, y):
    global flag
    global highlands
    if note[x][y] == 1:
        return
    note[x][y] = 1  # 记录已经遍历过
    if flag == 0:
        if picture[x + 1][y] == '#' and picture[x - 1][y] == '#' and picture[x][y + 1] == '#' and picture[x][y - 1] == '#':  # 找到高地
            highlands += 1
            flag = 1
    for i in range(4):
        xx = x + move[i][0]
        yy = y + move[i][1]
        if picture[xx][yy] == '#' and note[xx][yy] == 0:
            DFS(xx, yy)
        

for x in range(n):
    for y in range(n):
        if picture[x][y] == '#' and note[x][y] == 0:
            print(x,y)
            islands += 1
            flag = 0
            DFS(x, y)


print(islands - highlands)

尾声

其他的后续再跟进思路,感觉题目都好难救命

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

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

相关文章

mysql数据库表的多条件查询

mysql数据库表的多条件查询 一、select语句基本查询 SELECT 字段1,字段2....FROM 表名[WHERE 条件] [LIMIT N][ OFFSET M]select可以返回多条数据也可以返回一条数据如果要查询所有的字段可以用 *****代替where后面跟的是筛选条件&#xff08;可选&#xff09;N 是返回的数据…

1632_x86中几种地址概念的理解

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 在看xv6的资料的时候发现有几个概念没弄清楚&#xff0c;结果让我理解资料的时候感觉比较模糊。这几个概念名词也倒是简单&#xff1a;逻辑地址、线性地址、物理地…

vmware创建虚拟机centor7

右键 选择下好的centos7 设置密码 登录

Spring是怎么解决循环依赖的

1.什么是循环依赖&#xff1a; 这里给大家举个简单的例子&#xff0c;相信看了上一篇文章大家都知道了解了spring的生命周期创建流程。那么在Spring在生命周期的哪一步会出现循环依赖呢&#xff1f; 第一阶段&#xff1a;实例化阶段 Instantiation 第二阶段&#xff1a;属性赋…

代码随想录 NO52 | 动态规划_leetcode 647. 回文子串 516.最长回文子序列

动态规划_leetcode 647. 回文子串 516.最长回文子序列今天是动态规划最后一天的题了&#xff0c;整个过程已经接近尾声了&#xff01; 647. 回文子串 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 本题如果我们定义&#xff0c;dp[i] 为 下标i结尾的字符串有 dp…

【改进灰狼优化算法】改进收敛因子和比例权重的灰狼优化算法【期刊论文完美复现】(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…

【Hello Linux】进程概念

作者&#xff1a;小萌新 专栏&#xff1a;Linux 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;简单介绍下进程的概念 进程基本概念PCB 程序控制块task_struct是什么task_struct里面有什么查看进程通过系统目录查看进程通过ps指令查…

22.2.26打卡 Codeforces Round #853 (Div. 2)

A题极端考虑, 只要存在一个前缀数组的最大公约数小于等于2, 将其放在数组最前端, 那么保证能够满足题目要求数据范围这么小, 果断暴力Serval and Mochas Array题目描述Mocha likes arrays, and Serval gave her an array consisting of positive integers as a gift.Mocha thin…

ARM Context synchronization event和Instruction Synchronization Barrier

在Arm architecture里&#xff0c;经常提到Context synchronization event(CSE)和Explicit synchronization&#xff0c;Context synchronization events在之前是叫作context synchronization operations。Explicit synchronization是Context synchronization event的结果&…

C++9:优先级队列以及仿函数和反向迭代器

目录 优先级队列的基本增删查改实现 仿函数 反向迭代器 优先级队列的本质其实是一个堆&#xff0c;具体到底层的数据结构其实是有数学关系所形成的一个类似二叉树的结构 至于其优先级的这个特性&#xff0c;跟大堆小堆的性质是相同的&#xff0c;只不过它使用了仿函数来控制…

bool与引用类型

bool与引用类型bool类型介绍与使用bool(布尔类型)大小&#xff1a;1个字节返回值有两个&#xff1a;1(true)&#xff0c;0(false)#include<iostream>using namespace std;int main() {bool a false;bool b true;cout << "a " << a << end…

Lighthouse组合Puppeteer检测页面

如上一篇文章lighthouse的介绍和基本使用方法结尾提到的一样&#xff0c;我们在实际使用Lighthouse检测页面性能时&#xff0c;通常需要一定的业务前置条件&#xff0c;比如最常见的登录操作、如果没有登录态就没有办法访问其他页面。再比如有一些页面是需要进行一系列的操作&a…

从编年史角度看大数据兴起

开源大数据编年史大数据发展的各阶段大数据诞生初期大数据百花齐放的发展之路追求性能的大数据成熟期大数据发展的各阶段 开源大数据的编年史的话&#xff0c;实际上分为三个阶段。一般来说它分为初期、发展期、成熟期。 初期就是大数据刚开始萌芽的一个阶段&#xff0c;它从…

java 8 中的实用技巧

1 判断2个对象是否相等Objects.equals(a, b)(1) 比较时&#xff0c; 若a 和 b 都是null, 则返回 true, 如果a 和 b 其中一个是null, 另一个不是null, 则返回false。注意&#xff1a;不会抛出空指针异常。(2) a 和 b 如果都是空值字符串&#xff1a;"", 则 a.equals(b…

深入浅出解析ChatGPT引领的科技浪潮【AI行研商业价值分析】

Rocky Ding写在前面 【AI行研&商业价值分析】栏目专注于分享AI行业中最新热点/风口的思考与判断。也欢迎大家提出宝贵的意见或优化ideas&#xff0c;一起交流学习&#x1f4aa; 大家好&#xff0c;我是Rocky。 2022年底&#xff0c;ChatGPT横空出世&#xff0c;火爆全网&a…

CXL互联标准简介及相关资料

毕设是实现CXL的type3扩展内存设备&#xff0c;因为CXL技术非常新&#xff0c;2019年推出&#xff0c;本专栏也是记录CXL的相关知识与一些浅薄的理解 文章目录CXL出现的背景CXL是什么其他互联总线介绍CXL胜出的原因CXL内容简介包含三种协议 CXL.io/cache/memory支持三种设备类型…

SQL注入原理及漏洞利用(入门级)

文章目录一、什么是SQL注入漏洞&#xff1f;二、 SQL查询语句三、SQL注入分类数字型&#xff08;整型&#xff09;注入字符型注入搜索型注入四、SQL注入漏洞形成原因一、什么是SQL注入漏洞&#xff1f; 攻击者利用Web应用程序对用户输入验证上的疏忽&#xff0c;在输入的数据中…

基于Istio的高级流量管理二(Envoy流量劫持、Istio架构、高级流量管理)

文章目录一、Envoy流量劫持机制&#xff08;Iptables规则流转&#xff09;1、流量出向劫持流程&#xff08;1&#xff09;envoy怎样劫持入向流量&#xff1f;&#xff08;2&#xff09;Envoy劫持到流量之后&#xff0c;干什么&#xff1f;&#xff08;查询目的地&#xff09;&a…

tess4j简单使用入门

tess4j下载 下载地址: https://sourceforge.net/projects/tess4j/ 不要直接下载,点击files,然后下载最新版 下载解压后放到指定的目录即可,这里放到d:\jar目录下 tess4j根目录: d:\jar\tess4j tess4j使用 把test4j项目目录中dist和lib目录下的所有jar包导入到需要的项目中…

【云原生】k8s 离线部署讲解和实战操作

文章目录一、概述二、前期准备1&#xff09;节点信息2&#xff09;修改主机名和配置hosts3&#xff09;配置ssh互信4&#xff09;时间同步5&#xff09;关闭防火墙6&#xff09;关闭 swap7&#xff09;禁用SELinux8&#xff09;允许 iptables 检查桥接流量三、开始部署1&#x…