2023 Robocom 游记+题解

Robocom赛前一天熬夜打了一场edu,全程眯眯眼,三题滚粗了,前三题花了一小时才写完,第四题写了一小时也没写明白,好像预示着Robocom的结局?

早上七点醒了,感觉自己浑身无力,想睡觉但是又睡不着的折磨一直笼罩在我的身边,还是强忍着自己的意识睡了一小时,一小时反复醒了五六次,把星期天网络赛的板子整理了一下,然后又睡觉了。

12点,吃完饭了。

躺了一个小时,在睡觉和玩手机交题度过,然后一点半开始登录。

开局看了
T1
一读就是熟悉的味道,让人难以接受的题面风格。但是吃了三次答辩的我已经见怪不怪。
看到输入中有一个条件让人耳目一新,当自己的输入是"yourname"的时候要把账号替换成你的名字,否则就禁赛处理???
想了一会这个题目的评测机制,感觉普通spj也实现不了的样子,觉得很神奇。题面很简单,照着要求模拟一下即可,也没啥太恶心的东西。

T2
看了一下T2,此时我脑子里是? ? ? ? ? ? ? ? ?
莫非,是个cy出的大模拟??我先看看别的题吧

扫了一遍题目,咦这个T5题面这么短,我就读了一遍,很快理解了题意,感觉T5的读题风格显然不同于别的题面,看完之后一脸懵逼,想了一会觉得很难,感觉想不明白,然后思考了一会,看了眼榜于是决定回来搞搞T2。

于是又回到了答辩,看着难以忍受的题面,我理清了题目想表达的意思,不过也是够答辩的。总体题意就是:
六种颜色,八个牌号,问你自己的牌型有多少种,然后你可以询问一次排除答案,询问以问三种颜色和元素总和的方式询问。排除答案的数量是min(k1,k2),k1,k2分别为回答是或不是排除的答案数量,问你询问一次后你手里牌的可能数量(去掉排除的)。
看了眼数据范围,模拟一下写个dfs预处理C(6,3)的所有三元组,然后元素总和枚举[3 , 24]即可,暴力算算排除的和未排除的,然后取一个min就做完了。

做完前两题花了30min。
然后我看了一眼榜单,我发现有人过了T5,心里暗想着T5应该不难。
然后我就去看了T5,然后我手玩了一下,我发现一些好玩的性质:
第一个栈用了 i i i个,第二个栈用了 j j j个,此时留在数组里的数量好像是一个定值耶。我们采取这样的策略,就是能删就删的策略就可以让这个数组大小固定[因为我们肯定要尽可能的小]。
我们就定义 c n t [ i ] [ j ] cnt[i][j] cnt[i][j]为第一个栈用了 i i i个,第二个栈用了 j j j个,此时留在数组里的数量。这个转移我们可以用一个类似于dp的转移得到。
即考虑 c n t [ i ] [ j ] cnt[i][j] cnt[i][j] c n t [ i − 1 ] [ j ] cnt[i-1][j] cnt[i1][j]或者 c n t [ i ] [ j − 1 ] cnt[i][j-1] cnt[i][j1]转移,接下来的问题就是怎么判断数组是否有 k k k个相同的元素呢,如果我们要是加的是 a [ i ] a[i] a[i]元素,那我们就看看cnt[i - 1][j]这个状态里面有多少个a[i],显然这部分可以由处理得到,我赛场上用了一个vector配合upper_bound的做法去得到数组里面含有 a [ i ] a[i] a[i]的元素个数。
好了,现在这个 c n t [ i ] [ j ] cnt[i][j] cnt[i][j]可以由两个状态转移了,我们就考虑dp一下转移顺序吧。我们dp方式就是 d p [ i ] [ j ] dp[i][j] dp[i][j]表示第一个栈用了 i i i个,第二个栈用了 j j j个此时数组使用的最大数量是多少。
那我们的转移方式就是
1.从dp[i - 1][j]转移
d p [ i ] [ j ] = m i n ( d p [ i ] [ j ] , m a x ( d p [ i − 1 ] [ j ] , c n t [ i − 1 ] [ j ] + 1 ) ) dp[i][j] = min(dp[i][j] , max(dp[i - 1][j] , cnt[i -1][j] + 1)) dp[i][j]=min(dp[i][j],max(dp[i1][j],cnt[i1][j]+1))
m a x ( d p [ i − 1 ] [ j ] , c n t [ i − 1 ] [ j ] + 1 ) max(dp[i - 1][j] , cnt[i -1][j] + 1) max(dp[i1][j],cnt[i1][j]+1)是什么含义呢,就是表示前面转移取出来一个数的话,势必要多用一个数组位置,然后我们看看和之前开的数组大小是否能装下,不能装下就"撑开"。
2.从dp[i][j - 1]转移
同理
d p [ i ] [ j ] = m i n ( d p [ i ] [ j ] , m a x ( d p [ i ] [ j − 1 ] , c n t [ i ] [ j − 1 ] + 1 ) ) dp[i][j] = min(dp[i][j] , max(dp[i][j - 1] , cnt[i][j - 1] + 1)) dp[i][j]=min(dp[i][j],max(dp[i][j1],cnt[i][j1]+1))

然后过了样例交了一发就1a了QaQ,我是本科组全场第二个过的qaq。

然后看T3,T4过了不少了,然后我就开始收拾烂摊子,心想有机会 a k ak ak

于是开看T3
T3显然是一个很好写的大模拟,用一个优先队列维护结束位置,用户编号,碗号就可以了。好的,我经常被这样的题折磨了很多次!我知道一个好写的写法!就是提前先把 m m m个碗放进去,就少了很多不必要的判断,即判断优先队列里面的元素个数是否小于等于 m m m。然后很快的就写完了。

此时已经过去了 1 h 1h 1h
看了一眼榜, r k 1 rk1 rk1的那名老哥倒着开题,只差了 T 3 T3 T3了。

然后我去开T4
T4
一眼读完是一个大模拟,感觉时间复杂度显然不够用!然后感觉有种拓扑性质,然后发现貌似两个编号的拓扑关系只跟上面相邻位置有关(边界),要判断相邻位置即可。预处理的时候就是看看每个元素的上方,上面如果相邻元素和自己一样就不用管了,这两个是一家人,如果不相同的话,那么肯定是上面的先拿走了,自己再拿走,那我们就加边!然后我们按照这样的方式加边肯定得到一个有向图,然后跑一次拓扑序,题目貌似还要求了最小字典序,这好办,我们在跑拓扑序的时候用优先队列维护!我们只拿出来最小的。这样,你就获得了一个26的好成绩,然后我的做法在接下来的50min一直在mle和wa中度过。

不知道T4的神奇例子是什么,也许是我做法的问题,我觉得国赛的样例还是比较神奇的,感觉骗骗也能骗很多分,我的T4应该不是正解,但是还是骗到了26分,没有以 a k ak ak收尾,但是以 116 116 116收尾也是对得起自己的竞赛生涯了。

下赛季加油!

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

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

相关文章

AutoSAR配置与实践(基础篇)3.3 BSW的通信功能

传送门 -> AUTOSAR配置与实践总目录 AutoSAR配置与实践(基础篇)3.3 BSW的通信功能 一、收发过程概览1.1 发送过程概览1.2 接收过程概览 二、BSW的通信功能模块组成三、收发过程解析3.1 发送过程3.2 发送后的结果确认3.3 接收过程 一、收发过程概览 1…

Airbnb开源数据可视化工具Visx

一、什么是visx visx 是用于 React 的富有表现力的底层可视化组件集合,结合了 d3 的强大功能来生成可视化,以及 React 更新 DOM 的诸多优势。 在 Airbnb 内部,visx 的目标是统一整个公司的可视化堆栈,在此过程中,创建了 visx 项目,从而有效的将 D3 的强大功能与 React …

内核调试之devmem直接读写寄存器

今天分享一个内核调试实用工具——devmem。 相信很多做底层驱动的人都会经常用到。 什么是devmem? 在Linux系统,如果我们想要访问某个寄存器,就需要写一个驱动程序,在驱动中映射寄存器地址,转为虚拟地址后就可以访问…

windows电脑系统自带的画图工具如何实现自由拼图

1.首先选中你要拼接的第一张图片,右键选着编辑,会自动打开自带的画图工具 然后就是打开第一张图片,如下图所示 接着就是将画布托大,如下图所示。 然后点击选择,选择下面的空白区域,选着区域的范围要比准备拼…

05-微信小程序常用组件-表单组件

05-微信小程序常用组件-表单组件 文章目录 表单组件button 按钮案例代码 form 表单案例代码 image 图片支持长按识别的码案例代码 微信小程序包含了六大组件: 视图容器、 基础内容、 导航、 表单、 互动和 导航。这些组件可以通过WXML和WXSS进行布局和样式设…

jQuery第一次接触

jQuery是一个轻量级js库 1.下载jquery库&#xff0c;网址Download jQuery | jQuery npm i jquery 2.还可以从cdn中载入jquery <script src"https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> 3.j代表js&#xff0c;query代表查询&#xff0c;jQu…

超实用的40道JAVA经典算法题(含答案)

作为一名Java程序员&#xff0c;想要拿到一份满意的offer&#xff0c;就必须做好充足的准备。众所周知&#xff0c;算法可以说是大厂面试Java程序员的必问题。好的算法可以让性能得到万倍提升&#xff0c;做到毫秒级处理千万数据的程度。因此&#xff0c;算法的重要性不言而喻&…

fedora

about firewall well, I don’t know how to use fedora firewall,but it I come up with that I can use ubuntu’s ufw for blocking evil connection, download wps extremely boredness drove me to install fedora&#xff0c; It can use wps pdf&#xff0c;但我仍然…

PAT 1018 Public Bike Management

个人学习记录&#xff0c;代码难免不尽人意。 There is a public bike service in Hangzhou City which provides great convenience to the tourists from all over the world. One may rent a bike at any station and return it to any other stations in the city. The Pu…

【实用插件】ArcGIS for AutoCAD插件分享下载

ArcGIS包含一系列功能&#xff0c;其中ArcGIS for AutoCAD一个免费的可下载的AutoCAD插件&#xff0c;它可简化将CAD和GIS数据整合在一起的过程提供互操作性。 ArcGIS for AutoCAD互操作性平台将连接AutoCAD和 ArcGIS&#xff0c;以增强使用地理环境设计CAD工程图时的用户体验…

Kubernetes 企业级高可用部署

目录 1、Kubernetes高可用项目介绍 2、项目架构设计 2.1、项目主机信息 2.2、项目架构图 2.3、项目实施思路 3、项目实施过程 3.1、系统初始化 3.2、配置部署keepalived服务 3.3、配置部署haproxy服务 3.4、配置部署Docker服务 3.5、部署kubelet kubeadm kubectl工具…

程序员你可长点心吧!代码检查你得用

代码检查的重要性不言而喻&#xff0c;很多重要的项目都要做代码的检查&#xff0c;及时纠正代码中的错误&#xff0c;确保代码的可读性、可维护性和可拓展性&#xff0c;从而保证软件的质量。 一、代码检查的定义 代码检查是指通过对程序代码的独立检查来提高代码质量和开发效…

论坛项目之用户部分

注册接口 实现思路 1.特殊字段检查&#xff08;比如性别没有给出需要给出默认值&#xff09; 2.对比检查两次输入的密码是否一致&#xff0c;不一致报错 3.利用UUID生成随机‘盐’值&#xff0c;并使用密码进行MD5加密后与‘盐’进行拼接&#xff0c;生成加密后的密码 4.创建U…

什么是P2P?

P2P (Peer-to-Peer) 是一种分布式的网络架构&#xff0c;其中各个节点&#xff08;通常被称为“peers”或“节点”&#xff09;直接进行数据共享和交换&#xff0c;而无需依赖中央服务器。P2P 网络强调平等的参与和共享&#xff0c;每个节点既可以是数据的消费者&#xff08;下…

推进深度融合 打造智慧媒体

以下内容来自于易知微官网&#xff0c;点击一下&#xff0c;即可进入官网了解详情。 注意&#xff1a;案例数据均为虚拟数据 数字改革是一场波及经济社会发展全局、涵盖生产力到生产关系的全方位变革。在数字化时代&#xff0c;以数字改革赋能媒体深度融合已然成为时代所向、…

每日一题——连续子数组的最大和

题目 输入一个长度为n的整型数组array&#xff0c;数组中的一个或连续多个整数组成一个子数组&#xff0c;子数组最小长度为1。求所有子数组的和的最大值。 数据范围:1<n<2105 −100<a[i]<100 要求:时间复杂度为 O(n)&#xff0c;空间复杂度为 O(n) 示例1 输入…

ubuntu中安装python

最简单方便的是 apt 使用第三方的 ppa 源&#xff0c;然后直接 apt 安装 python3.9 安装 software-properties-common 获取add-apt-repository命令&#xff1a;apt install -y software-properties-common添加第三方的 ppa 源&#xff1a;add-apt-repository ppa:deadsnakes/p…

Spring系列篇--关于Spring Bean完整的生命周期【附有流程图,超级易懂】

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Spring的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.Spring Bean是单例模式还是多例模式 二…

Kafka如何保证消息⼀定能被消费

Kafka 通过多种机制来保证消息一定能被消费&#xff0c;从而实现数据的可靠性和持久性。 以下是一些常见的方法和策略来提高消息的可靠性&#xff1a; 复制机制&#xff1a; Kafka 使用了分区和副本的概念。每个分区可以有多个副本&#xff0c;分布在不同的 Broker 上。当消息…

k8s 自身原理 3

前面有分享到 master 主节点上的 四个组件&#xff0c;etcd&#xff0c;ApiServer&#xff0c;scheduler&#xff0c;controller manager 接下来我们分享一波 woker 节点上的组件&#xff0c;xdm 还记得 worker 节点上都有什么吗&#xff1f; kubeletkube-proxy实际的服务对应…