[蓝桥复盘] 算法赛内测赛2 20230831

[蓝桥复盘] 算法赛内测赛2 20230831

    • 总结
    • 新一与基德的身高大战
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 肖恩的投球游戏加强版
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 体育健将
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 小桥的奇异旋律
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 区间or划分
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 六、参考链接

总结

  • 好难啊。
  • T1 数学
  • T2 二维差分模板
  • T3 贪心+树状数组上二分
  • T4 差分模拟
  • T5 贪心+前后缀分解

在这里插入图片描述

新一与基德的身高大战

链接: 新一与基德的身高大战

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 奇数+偶数会造成损失,那么优先把奇数和奇数互相配对即可。

3. 代码实现


def solve():n, = RI()a = sorted(RILST(), key=lambda x: x & 1)b = sorted(RILST(), key=lambda x: x & 1)print(sum((x + y) // 2 for x, y in zip(a, b)))

肖恩的投球游戏加强版

链接: 肖恩的投球游戏加强版

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 直接贴模板,二维树状数组或者二维差分即可。

3. 代码实现

class BinTree2DIUPQ:"""二维树状数组"""def __init__(self, m, n):self.n = nself.m = mself.tree = [[0] * (n + 1) for _ in range(m + 1)]def lowbit(self, x):return x & (-x)def _update_point(self, x, y, val):m, n, tree = self.m, self.n, self.treewhile x <= m:y1 = ywhile y1 <= n:tree[x][y1] += valy1 += y1 & -y1x += x & -xdef _sum_prefix(self, x, y):res = 0tree = self.treewhile x > 0:y1 = ywhile y1 > 0:res += tree[x][y1]y1 &= y1 - 1x &= x - 1return resdef add_interval(self, x1, y1, x2, y2, v):self._update_point(x1, y1, v)self._update_point(x2 + 1, y1, -v)self._update_point(x1, y2 + 1, -v)self._update_point(x2 + 1, y2 + 1, v)def query_point(self, x, y):return self._sum_prefix(x, y)#       ms
def solve():n, m, q = RI()tree = BinTree2DIUPQ(n, m)for i in range(1, n + 1):row = RILST()for j, v in enumerate(row, start=1):tree.add_interval(i, j, i, j, v)for _ in range(q):x1, y1, x2, y2, c = RI()tree.add_interval(x1, y1, x2, y2, c)for i in range(1, n + 1):ans = []for j in range(1, m + 1):ans.append(tree.query_point(i, j))print(*ans)

体育健将

链接: 体育健将

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 首先想背包,发现值域1e8,放弃。那肯定是贪心了。
  • 题目特殊点肯定是最后一个比赛可以无视休息,那么考虑枚举每一个比赛作为只取a的那场,看剩余k-ai的时间,能取多少场比赛。
  • 那么按a+b排序,然后在树状数组上二分即可,对于每个i,看前缀<=k-ai能到哪。

3. 代码实现

def lower_bound(lo: int, hi: int, key):"""由于3.10才能用key参数,因此自己实现一个。:param lo: 二分的左边界(闭区间):param hi: 二分的右边界(闭区间):param key: key(mid)判断当前枚举的mid是否应该划分到右半部分。:return: 右半部分第一个位置。若不存在True则返回hi+1。虽然实现是开区间写法,但为了思考简单,接口以[左闭,右闭]方式放出。"""lo -= 1  # 开区间(lo,hi)hi += 1while lo + 1 < hi:  # 区间不为空mid = (lo + hi) >> 1  # py不担心溢出,实测py自己不会优化除2,手动写右移if key(mid):  # is_right则右边界向里移动,目标区间剩余(lo,mid)hi = midelse:  # is_left则左边界向里移动,剩余(mid,hi)lo = midreturn hiclass BinIndexTree:"""    PURQ的最经典树状数组,每个基础操作的复杂度都是logn;如果需要查询每个位置的元素,可以打开self.a    """def __init__(self, size_or_nums):  # 树状数组,下标需要从1开始# 如果size 是数字,那就设置size和空数据;如果size是数组,那就是aif isinstance(size_or_nums, int):self.size = size_or_numsself.c = [0 for _ in range(self.size + 5)]# self.a = [0 for _ in range(self.size + 5)]else:self.size = len(size_or_nums)# self.a = [0 for _ in range(self.size + 5)]self.c = [0 for _ in range(self.size + 5)]for i, v in enumerate(size_or_nums):self.add_point(i + 1, v)def add_point(self, i, v):  # 单点增加,下标从1开始# self.a[i] += vwhile i <= self.size:self.c[i] += vi += i & -idef sum_prefix(self, i):  # 前缀求和,下标从1开始s = 0while i >= 1:s += self.c[i]# i -= i&-ii &= i - 1return sdef lowbit(self, x):return x & -x#       ms
def solve():n, k = RI()a = RILST()b = RILST()ans = 0s = BinIndexTree(n)ab = sorted(zip(a, b), key=lambda x: x[0] + x[1])for i, (x, y) in enumerate(ab, start=1):s.add_point(i, x + y)for i, (x, y) in enumerate(ab, start=1):s.add_point(i, -(x + y))p = lower_bound(1, n, lambda y:s.sum_prefix(y) > k-x) - 1ans = max(ans, 1 + p - int(p >= i))s.add_point(i, x + y)print(ans)

小桥的奇异旋律

链接: 小桥的奇异旋律

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 由于是交替,可以考虑枚举正负正负…和负正负正…两种情况。
  • 由于求的是前缀和,但修改的是原数组,因此考虑枚举前缀和,从前向后处理,做差分即可。
  • 对于每个位置,如果它正负性不满足,则调整到1或-1。

3. 代码实现

def solve():n, = RI()a = RILST()p = list(accumulate(a))ans = 0def get(z):d =ans= 0for i,v in enumerate(p):v += dif i %2==z:  # 需求正数if v <= 0:x = 1 - vans += xd += xelse:  # 需求负数if v >= 0:x = v+1ans += xd -= xreturn ansprint(min(get(1),get(0)))

区间or划分

链接: 区间or划分

1. 题目描述

在这里插入图片描述

2. 思路分析

赛中看错题了,以为是异或,其实是或,那就好想一点。
  • 由于a|b<a+b,那么最小的或和,一定是整个数组或起来的值。
  • 那么每一位上的1一定要在同一组,否则会进位。
  • 考虑能分多少组:发现两组的分界点一定等价于前缀或&后缀或==0。

3. 代码实现

def solve():n, = RI()a = RILST()m = reduce(ior,a)p = [0]+list(accumulate(a,ior))s = 0ans =  0for i in range(n-1,-1,-1):s |= a[i]if s & p[i] == 0:ans += 1print(m,ans)

六、参考链接

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

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

相关文章

css让多个盒子强制自动等宽

1.width: calc( 100 / n% ) 2.display:flex; flex:1;width:100px; 3.display:grid;grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); 但是其中某一个内容较长的时候 会破坏1:1:1的平衡 这个时候发现附件名字过长导致不等比例&#xff0c;通过查看阮一峰flex文…

安防视频监控/视频集中存储/云存储平台EasyCVR平台无法取消共享通道该如何解决?

视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等&#xff0c;视频智能分析平台EasyCVR融合性强、开放度…

智慧景区方案:AI与视频融合技术如何助力景区监管智能化升级?

随着经济的发展&#xff0c;人们对生活的需求也不再局限于温饱层面&#xff0c;越来越多的人们开始追求文化、艺术的高层次需求&#xff0c;旅游也逐渐成为人们日常放松的一种方式。由于我国人口多、易扎堆等特点&#xff0c;景区的运营监管方式也亟需改革。TSINGSEE青犀智能分…

ssm计算机网络课程试卷生成器系统源码

ssm计算机网络课程试卷生成器系统源码099 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm package com.controller;import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays;…

OPENCV实现SURF特征检测

1、SURF优点:SIFT速度慢,一次出现了SURF;2、使用SURF步骤:surf = cv2.xfeatures2d.SURF_create()kp,des = surf.detectAndComputer(img,mask)# -*- coding:utf-8 -*- """ 作者:794919561 日期:2023/8/31 """# -*-

Linux脚本- 执行当前文件下前500个.c文件,并将每个文件对应的执行结果重定向到同名的.ok文件中

需求&#xff1a;执行当前文件下前500个.c文件&#xff0c;并将每个文件对应的执行结果重定向到同名的.ok文件中 以下是一个用于实现该功能的 Bash 脚本。 #!/bin/bash# 计数器&#xff0c;用于限制处理的文件数量 counter0# 遍历当前目录下的所有 .c 文件 for c_file in *.c…

uni-app 编译报错 Error: pages.json解析失败,不符合 json 规范Unexpected token ‘)‘

问题 使用webstorm开发项目时&#xff0c;打开pages.json习惯性ctrlaltl把代码格式了&#xff0c;然后报错了。 接着使用HBuilder编译&#xff0c;但是一直显示在编译中&#xff0c;完全没有反映。重启编译器与重启电脑都没有用。 没管然后编译报错了。 加上逗号再运行还是报…

Uniapp新版本打包后覆盖安装,新增的页面无法跳转,需退出重新启动才可以打开的解决方案

最近写uniapp项目&#xff0c;发现一个坑&#xff0c;在新版本覆盖安装后直接打开APP&#xff0c;新增的页面竟然无法跳转&#xff0c;需要重新启动才可以正常打开&#xff0c;在网上查了很多方法&#xff0c;最终总结下来有以下几点&#xff1a; 1.看打的是debug包还是releas…

Android 之 LayoutInflater (布局服务)

本节引言&#xff1a; 本节继续带来的是Android系统服务中的LayoutInflater(布局服务)&#xff0c;说到布局&#xff0c;大家第一时间 可能想起的是写完一个布局的xml&#xff0c;然后调用Activity的setContentView()加载布局&#xff0c;然后把他显示 到屏幕上是吧~其实这个底…

会话跟踪技术

cookie 是通过在浏览器第一次请求服务器时&#xff0c;在响应中放入cookie&#xff0c;浏览器接收到cookie后保存在本地&#xff0c;之后每次请求服务器时都将cookie携带到请求头中&#xff0c;用来验证用户身份与状态等。 缺点&#xff1a; 移动端app没有cookiecookie保存在…

11月考PMP的考生注意了,请尽快完成英文报名!

PMP 项目管理专业人士资格认证&#xff0c;是经由美国项目管理协会&#xff08;PMI&#xff09;发起&#xff0c;组织的考试&#xff0c;目的是为了给项目管理人员提供统一的行业标准&#xff0c;严格评估项目管理人员知识技能是否具有高品质的资格认证考试。 免费送备考资料。…

直播电商系统源码:搭建属于你自己的直播商城

​ 感谢您选择一一零七科技有限公司&#xff0c;在这里&#xff0c;我们致力于为您提供最佳的商城解决方案。我们引以为豪的产品之一就是独立商城&#xff0c;它将成为您拓展业务、增加盈利的利器。今天&#xff0c;我们将向您介绍这个令人激动的产品&#xff0c;同时展示我们的…

input时间表单默认样式修改(input[type=“date“])

一、时间选择的种类: HTML代码&#xff1a; <input type"date" value"2018-11-15" />选择日期&#xff1a; 选择时间&#xff1a; <input type"time" value"22:52" />在这里插入图片描述 选择星期&#xff1a; <…

JavaScript—数据类型、对象与构造方法

js是什么&#xff1f; JavaScript&#xff08;简称“JS”&#xff09; 是一种具有函数优先的轻量级&#xff0c;解释型或即时编译型的编程语言。JavaScript 基于原型编程、多范式的动态脚本语言&#xff0c;并且支持面向对象、命令式、声明式、函数式编程范式。 js有哪些特点呢…

Java类的声明周期、对象的创建过程

一、类的生命周期 使用类时&#xff0c;要先使用类加载器将类的字节码从磁盘加载到内存的方法区中&#xff0c;用Class对象表示加载到内存中的类&#xff0c;Class类是JDK中提供的类创建对象时&#xff0c;是根据内存中的Class对象&#xff0c;在堆中分配内存&#xff0c;完成…

Servlet与过滤器

目录 Servlet 过滤器 Servlet Servlet做了什么 本身不做任何业务处理,只是接收请求并决定调用哪个JavaBean去处理请求,确定用哪个页面来显示处理返回的数据 Servlet是什么 ServerApplet&#xff0c;是一种服务器端的Java应用程序 只有当一个服务器端的程序使用了Servlet…

网御ACM上网行为管理系统bottomframe.cgi接口存在SQL注入漏洞 附POC

文章目录 网御ACM上网行为管理系统bottomframe.cgi接口存在SQL注入漏洞 附POC1. 网御ACM上网行为管理系统简介2.漏洞描述3.影响版本4.fofa查询语句5.漏洞复现6.POC&EXP7.整改意见8.往期回顾 网御ACM上网行为管理系统bottomframe.cgi接口存在SQL注入漏洞 附POC 免责声明&am…

自然语言处理(NLP)是什么?

NLP(自然语言处理) 和 Phoebe Liu 的简介 您有没有和聊天机器人互动过&#xff1f;或者您是否向虚拟助手&#xff0c;例如 Siri、Alexa 或您车上的车载娱乐系统发出过某些请求&#xff1f;您使用过在线翻译吗&#xff1f;我们大多数人都曾与这些人工智能 (AI) 互动过&#xff…

自步学习的介绍 self paced learning

这方面的研究专家&#xff0c;参考西安交通大学的 孟德宇老师 他最近的研究方向&#xff1a; Fundamental problems in machine learning and computer vision, especially including: Meta-learning Variational bayesian methods on inverse problems Robust and interpret…

ELK安装、部署、调试(三)zookeeper安装,配置

1.准备 java安装&#xff0c;系统自带即可 2.下载zookeeper zookeeper.apache.org上可以下载 tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /usr/local mv apache-zookeeper-3.7.1-bin zookeeper 3.配置zookeeper mv zoo_sample.cfg zoo.cfg /usr/local/zookeeper/con…