ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

UOJ NOI Round 6

2022-08-08 12:33:58  阅读:153  来源: 互联网

标签:pre NOI 个数 Round 选择 括号 UOJ 2i 贪心


再次体验到了挂分的乐趣。。。

Day 0

按理来说应该是要参加 笔试 的,结果和同学踢球错过了报名。。。于是咕了。。。
队友极假,三颗单刀一颗没进,无脑致敬斯特林,体验极差。。

Day 1

T1 面基之路

首先注意到 hehe 是肯定不会走回头路的,因为所有人速度都相同,走回头路不如站在一个地方等其他人过来,所以最终一定是所有人都走到一个地方。所谓面基,就是走到某个约定好的地点罚站,等最后一个人过来。。。

于是对 \(k\) 个点中的每个点跑一次最段路,要求的就是点上或边上的一点使得所有人到这个点的最大距离最小,点上的很好求,边上的只要将这 \(k\) 个点排序或二分答案即可,不加以赘述。貌似只有我写了二分答案,常数大的离谱。。。

code

T2 机器人表演

与官方题解不同,这是取自评论区的一种做法。不知道为何被点了十几个踩。。。

首先这肯定是一个 \(dp\) ,于是考虑设计状态。不要看到括号就去想区间 \(dp\) ,因为给出的串 \(s\) 并不满足括号匹配。。。考虑是否存在一种方法将一个 \(01\) 序列 \(t\) 唯一的表示出来,不难想到先找出最长的 \(s\) 的前缀满足它是 \(t\) 的一个子序列,那么剩下的括号就是新加入的 \(t\) 对 \(01\) 。
于是设状态 \(f_{i, j, k}\) 表示 \(s\) 中最长能与 \(t\) 匹配的长度为 \(i\) ,剩下的序列中有 \(j\) 个 \(0\), \(k\) 个 \(1\) 的方案数,因为每个合法 \(01\) 序列可以被唯一表示,所以只要转移正确就一定不会出现被算重或少算的情况。

接下来考虑转移,先按照长度枚举所有的状态 \(f_{i, j, k}\) ,转移就是枚举下一个位置要添 \(0\) 还是 \(1\):
若要添的数其好等于 \(s_{i + 1}\) ,那么只能转移到 \(f_{i + 1, j, k}\) ;
否则对 \(0\) 和 \(1\) 分类讨论,若要添 \(0\) 显然是没有限制的,可以直接转移到 \(f_{i, j + 1, k}\) ;
若要添 \(1\) ,注意到为了满足括号匹配,只有在 \(j > k\) 的时候可以直接转移到 \(f_{i, j, k + 1}\) ;
否则无法直接转移,但并不代表这种情况一定不合法,注意到可能存在一个位置 \(pre_i\) 满足 \(s_{pre_i} = 0\) ,且 \(s_{pre_i + 1, i}\) 是合法括号序,那么将 \(s_{pre_i, i}\) 归类到新加入的括号,记这一段的长度为 \(len\) ,即可转移到状态 \(f_{pre_i - 1, j + \frac{len}{2} + 1, k + \frac{len}{2} + 1}\) 。

code

T3 稳健型选手

乍一看没有什么思路,于是先从暴力想起。
直接求最大的贡献很困难,于是正难则反,考虑算另一个人最小的贡献。注意到两人是轮流选取的,且我们考虑的这个人只选最左边的数,那么进行到第 \(2i\) 轮的时候,选了 \(i\) 个数,因此选择的第 \(i\) 个数,一定是在第 \(2i\) 轮之前,于是一种贪心的策略是每次加入两个数,选出此时还没选的最小的数,用堆维护即可,时间复杂度 \(O(nq \log n), 40pts\) 。

考虑另一种贪心,之前是从左向右枚举的,如果从右向左枚举可以吗?显然也是可以的,每次向左加入两个数,因为第 \(i\) 个数是在的 \(2i\) 轮之前选择的,所以新加入的两个数中,较小的那个必须选择,较大的数如果比已经选择的数中最大的小,就选择它(类似于反悔贪心)。这样便实现了同时向两边扩展,可以用两个堆,分别维护选择的数和为选择的数,用不删除莫队即可做到 \(O(n \sqrt(n) \log n), 70pts\) 。然而我写的太丑 TLE 了。。。只是徒增了罚时。。\kk

此时这个做法离正解已经很接近了,将上面两种贪心的规则规范化,就是对于前 \(2i\) 个数中,一定会选择 \(\ge i\) 个数,对于后 \(2i\) 个数中,一定选择 \(\le i\) 个数。不难通过看题解等方法想到可以用分治解决这个问题,对于每个询问,只在第一个它跨过分治中心的区间计算它,由上述贪心可得,对于分治中心的左边,有一些数是必须选的,而对于分治中心的右边,有一些数是一定不会选的,于是用两棵主席树,分别维护左边和右边可能选择的数,每次相当于在两棵主席数中求一个前 \(k\) 大的和。

code

Day 2

还没改完/kk

标签:pre,NOI,个数,Round,选择,括号,UOJ,2i,贪心
来源: https://www.cnblogs.com/CTcode/p/UNR6.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有