[acwing周赛复盘] 第 94 场周赛20230311

[acwing周赛复盘] 第 94 场周赛20231118

    • 总结
    • 5295. 三元组
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 5296. 边的定向
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 六、参考链接

总结

  • 好久没做acw了,挺难的。
  • T1 模拟
  • T2 前缀和以及优化。
  • T3 贪心
  • 在这里插入图片描述

5295. 三元组

链接: 5295. 三元组

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 设a=sum(0,x),b=sum(y,z)。那么best=a+b-(s-a-b)=2(a+b)-s。
  • 那么其实是找最大的a+b。用前缀和来处理这个事情。
  • 即pre[x] + (pre[z] - pre[y]),注意其实可以用左闭右开写法。
  • 由于数据量5000,可以枚举y和z,记录y之前的最大x即可。

  • 也可以优化成O(n),有点类似状态机DP。

3. 代码实现

def solve():"""best = (0~x)+(y~z) - (s-(0~x)-(y~z)) = 2((0~x)+(y~z)) - s因此是 找最大的两段和, pre[x] + pre[z] - pre[y],其中x<=y<=z,记录y之前最大的pre[x],z之前最大的pre[x]-pre[y]即可"""n, = RI()a = RILST()p = 0mx = [0, 0, 0, 0]  # best,x,y,zpx = [0, 0]  # prex,xpy = [0, 0, 0]  # pre[x]-pre[y]for z, v in enumerate(a, start=1):p += vpx = max(px, [p, z])py = max(py, [px[0] - p, px[1], z])mx = max(mx, [p + py[0], py[1], py[2], z])       print(*mx[1:])def solve1():n, = RI()a = RILST()pre = [0] + list(accumulate(a))mx = [0, 0, 0, 0]pm = [(i, v) for i, v in enumerate(pre)]for i in range(1, n + 1):if pm[i][1] <= pm[i - 1][1]:pm[i] = pm[i - 1][:]for y in range(0, n):for z in range(y, n):mx = max(mx, [pre[z + 1] - pre[y] + pm[y][1], pm[y][0], y, z + 1])print(*mx[1:])

5296. 边的定向

链接: 5296. 边的定向

1. 题目描述

在这里插入图片描述

2. 思路分析

貌似很难,但其实贪心能过。
  • 最大访问数就是尽量向外延伸,把所有访问到的边都朝外指。
  • 最小访问数就是遇到的边超里指,只走本来就有的有向边。
  • 代码实现时,建图记录边的id,遇到时判断当前方向和输入方向是否一致决定方向。
  • 注意有的边可能不会遇到,可以是任意方向。

3. 代码实现

def solve():n, m, s = RI()g = [[] for _ in range(n + 1)]edges = []for i in range(m):t, u, v = RI()edges.append((u, v, t))g[u].append((v, i))if t == 2:g[v].append((u, i))q = deque([s])  # 把遇到的边都变成正向vis = {s}d = [0] * mwhile q:u = q.popleft()for v, i in g[u]:if v not in vis:vis.add(v)q.append(v)if edges[i][2] == 2:  # 如果是无向边,让他u->vd[i] = '+' if u == edges[i][0] else '-'print(len(vis))ans = []for x, (_, _, t) in zip(d, edges):if t == 2:ans.append(x if x else '+')print(''.join(ans))q = deque([s])  # 把遇到的边都变成负向vis = {s}d = [0] * mwhile q:u = q.popleft()for v, i in g[u]:if v not in vis:if edges[i][2] == 1:  # 有向边必须走vis.add(v)q.append(v)else:  # 无向边不走,u<-vd[i] = '-' if u == edges[i][0] else '+'print(len(vis))ans = []for x, (_, _, t) in zip(d, edges):if t == 2:ans.append(x if x else '+')print(''.join(ans))

六、参考链接

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

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

相关文章

Java Web——JavaScript基础

1. 引入方式 JavaScript程序不能独立运行&#xff0c;它需要被嵌入HTML中&#xff0c;然后浏览器才能执行 JavaScript 代码。 通过 script 标签将 JavaScript 代码引入到 HTML 中&#xff0c;有3种方式&#xff1a; 1.1. 内嵌式(嵌入式) 直接写在html文件里&#xff0c;用s…

Redis新操作

1.Bitmaps 1.1概述 Bitmaps可以对位进行操作&#xff0c;实际上它就是一个字符串&#xff0c;可以将Bitmaps想象为一个以位为单位的数组&#xff0c;数组中的每个元素只能存储0或者1&#xff0c;数组的下标在Bitmaps被称为偏移量。 setbit key offset value&#xff1a;设置o…

【C语言】数组下标为啥从0开始?下标越界访问一定报错吗?

本篇文章目录 0. 相关文章1. 下标从0开始问题2. 数组下标越界不报错问题 0. 相关文章 指针与指针变量数组名不是首元素地址的的2个例外拨开指针和数组名之间的迷雾 1. 下标从0开始问题 原因是&#xff1a;数组下标访问本质是“指针解引用操作”&#xff0c;而指针又是地址&am…

彩色年终工作总结汇报PPT模板下载

这是一套彩色年终工作总结汇报PPT模板&#xff0c;共27页&#xff1b; PPT模板封面&#xff0c;使用了红黄蓝色块、网格背景。中间填写年终工作总结汇报PPT标题。界面为简约商务风格。 PowerPoint模板内容页&#xff0c;由25张彩色动态幻灯片图表&#xff0c;搭配PPT文字排版…

gRPC 的原理 介绍带你从头了解gRPC

gRPC 的原理 什么是gRPC gRPC的官方介绍是&#xff1a;gRPC是一个现代的、高性能、开源的和语言无关的通用 RPC 框架&#xff0c;基于 HTTP2 协议设计&#xff0c;序列化使用PB(Protocol Buffer)&#xff0c;PB 是一种语言无关的高性能序列化框架&#xff0c;基于 HTTP2PB 保…

如何零基础自学AI人工智能

随着人工智能&#xff08;AI&#xff09;的快速发展&#xff0c;越来越多的有志之士被其强大的潜力所吸引&#xff0c;希望投身其中。然而&#xff0c;对于许多零基础的人来说&#xff0c;如何入门AI成了一个难题。本文将为你提供一份详尽的自学AI人工智能的攻略&#xff0c;帮…

Vue3-shallowRef 和 shallowReactive函数(浅层次的响应式)

Vue3-shallowRef 和 shallowReactive函数&#xff08;浅层次的响应式&#xff09; shallowRef函数 功能&#xff1a;只给基本数据类型添加响应式。如果是对象&#xff0c;则不会支持响应式&#xff0c;层成也不会创建Proxy对象。ref和shallowRef在基本数据类型上是没有区别的…

Linux下查看pytorch运行时真正调用的cuda版本

一般情况我们会安装使用多个cuda版本。而且pytorch在安装时也会自动安装一个对应的版本。 正确查看方式&#xff1a; 想要查看 Pytorch 实际使用的运行时的 cuda 目录&#xff0c;可以直接输出 cpp_extension.py 中的 CUDA_HOME 变量。 import torch import torch.utils imp…

python学习:break用法详解

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 在执行while循环或者for循环时&#xff0c;只要循环条件满足&#xff0c;程序会一直执行循环体。 但在某些场景&#xff0c;我们希望在循环结束前就强制结束循环。 Python中有两种强制结束循环的方法&#xff1a; continue语…

2.2 调用星火大模型的API

调用星火大模型的API 1 申请API调用权限&#xff1a;2 调用原生星火 API3 统一API调用方式 项目仓库地址&#xff1a;https://github.com/datawhalechina/llm-universe 讯飞星火认知大模型&#xff0c;由科大讯飞于2023年5月推出的中文大模型&#xff0c;也是国内大模型的代表…

适用于 Windows 的 10 个最佳视频转换器:快速转换高清视频

您是否遇到过由于格式不兼容而无法在您的设备上播放视频或电影的情况&#xff1f;您想随意播放从您的相机、GoPro 导入的视频&#xff0c;还是以最合适的格式将它们上传到媒体网站&#xff1f;您的房间里是否有一堆 DVD 光盘&#xff0c;想将它们转换为数字格式以便于播放&…

人充当LLM Agent的工具(Human-In-The-Loop ),提升复杂问题解决成功率

原文&#xff1a;人充当LLM Agent的工具&#xff08;Human-In-The-Loop &#xff09;&#xff0c;提升复杂问题解决成功率 在Agent开发过程中&#xff0c;LLM充当Agent的大脑&#xff0c;对问题进行规划、分解、推理&#xff0c;在执行过程中合理选择利用工具&#xff08;Tool&…