Day1 T1 Jail

操作很类似华容道。由于这题是可以树,同时每一个人走的都是最短路,这也就意味着不会出现通过好多个人一起的挪动来匀出空间。

所以如果合法,必然存在一种方案是每一次直接将一个人挪到终点。

由此,对于一个人 \((S_i,T_i)\) 来说,起点在他的路径上的人必然在他之前移动,终点在他的路径上的人必然在他之后移动。这个偏序关系可以使用树剖+线段树优化建图来做到。

然后拓扑排序一遍判断是否有环即可,时间复杂度 \(O(n\log^2n)\)。

Day1 T2 Sightseeing in Kyoto

考虑什么时候会出现拐弯的情况。如果我们的路线是 \((l,x)\to (l,y)\to (r,y)\)。

则它的贡献为 \((y-x)A_l+(r-l)B_y\),它小于 \((r-l)B_x+(y-x)A_r\)。

也就是 \((y-x)A_l+(r-l)B_y<(r-l)B_x+(y-x)A_r\)。

整理得 \(\dfrac{B_y-B_x}{y-x}<\dfrac{A_r-A_l}{r-l}\),这也就意味着,对于最优解,我们会贪心的走斜率更小的一遍,所以我们维护出一个下凸壳,每一次贪心的移动即可。

Day1 T3 Misspelling

每一条限制都是形如,在 \([l,r]\) 之间,第一次出现 \(c_i\neq c_{i-1}\) 的时候,它需要满足 \(c_i>c_{i-1}\) 或 \(c_i<c_{i-1}\)。

考虑记 \(f_{i,c}\) 表示处理了前 \(i-1\) 位,从第 \(i\) 位开始是一个为 \(c\) 的连续段的方案数,转移可以使用线段树维护,时间复杂度 \(O(n\Sigma\log n)\)。

Day2 T1 Copy and Paste 3

暴力 SAM 做法

Day2 T2 Flights

神秘通信题。

Day2 T3 Team Contest

我们必然是选择 \(X,Y,Z\) 最大的三个人最优,但是如果其中有一个人在两项中作为的最大值,则它必然不可能作为合法的答案出现,我们就可以将其删除,这样就变成了一个子问题。

不断重复删除的过程,使用优先队列维护当前最大值即可,时间复杂度 \(O(n\log n)\)。

Day3 T1 Broken Device 2

Day3 T2 Sprinkler

树上邻域乘,单点查询。

当然可以用点分树来做,但是太麻烦了。考虑到 \(D\),很小,所以我们可以将每一次邻域乘的操作拆分成 \(O(D)\) 个对树上某一个子树的某一层的乘法操作,直接暴力维护即可,时间复杂度 \(O(nD)\)。

Day3 T3 Ants and Sugar

这是一个二分图最大匹配的结构,根据 Hall 定理,可以得到最终答案为:\(\sum\limits_{i=0}^XA_i-\max\limits_{S}\left(\sum\limits_{[l',r']\in S}\left(\sum\limits_{i=l'}^{r'}A_i-\sum\limits_{i=l'-L}^{r'+L}B_i\right)\right)\)。

其中 \(S\) 是可能的区间集合,我们发现,任何两个相邻的区间之间的距离必然大于 \(2L\),否则将这两个区间合并在一起更优。

记 \(p_i=-\sum\limits_{j=1}^iA_j+\sum\limits_{j=1}^{i-L}B_j\),\(q_i=\sum\limits_{j=1}^iA_j-\sum\limits_{j=1}^{i+L}B_j\)。

则上式就等于 \(\sum\limits_{i=0}^XA_i-\max\limits_{S}\left(\sum\limits_{[l',r']\in S}\left(q_{r'}-p_{l'-1}\right)\right)\)。

也就是要最大化 \(p,q\) 的交替出现求和。使用线段树维护 \(f_{0/1,0/1}\) 表示当前区间中最左边或最右边是 \(p\) 或 \(q\) 的最大可能值。

考虑到对于一个 \(A\) 或者 \(B\) 的修改就是对一段后缀的 \(p\) 或者 \(q\) 进行加减,在进行 \(A\) 的操作时,是会对某个后缀的 \(p\) 减少,\(q\) 增加,可以直接对于每一个 \(f_{0/1,0/1}\) 进行对应的修改;而在对 \(B\) 进行操作的时候,\(q\) 会比 \(p\) 多修改一段长度为 \(2L\) 的,但是考虑到相邻区间的距离大于 \(2L\),所以说被修改的一段内至多只有一个 \(p\) 和一个 \(q\),所以对于每一个 \(f_{0/1,0/1}\) 的修改也是可以直接计算出来的。

时间复杂度 \(O(n\log n)\)。

Day4 T1 Super Dango Maker

考虑可以询问的次数大约是 \(NM\log_2M\),所以考虑分治。

我们希望能够将 \(M\) 组团子分成两组,一组是 \(\left\lfloor\dfrac{M}{2}\right\rfloor\) 个,另一组是 \(\left\lceil\dfrac{M}{2}\right\rceil\) 个。

考虑以此尝试删去每一个团子,如果删去之后可以组成的团子组数小于 \(\left\lfloor\dfrac{M}{2}\right\rfloor\) 了,就把它加回来,这样一直操作,就可以均分了。

操作次数是 \(NM\log_2M\) 的,可以通过。

Day4 T2 Fish 2

考虑维护每一条鱼可以吃的最长区间,则包含了某一个点的本质不同区间最多只有 \(O(\log V)\) 个,因为一个区间是极长的,就意味着它左右两侧的点的权值大于区间的权值和,想要让区间扩张,区间权值和至少翻倍,而区间和达到上界 \(V\) 之后就必然可以将所有的鱼吃掉了。

由于我们要进行区间查询,所以考虑如何在区间内部维护这一信息,还需要支持快速合并。

发现一个区间想要能够再向外扩展,它至少需要包含左端点或者右端点中的一个,由此,我们可以将可能拓展的点分成三类:

  1. 只包含左端点的区间,有 \(O(\log V)\) 种。
  2. 只包含右端点的区间,有 \(O(\log V)\) 种。
  3. 同时包含了左右端点的区间,只有一种。

对我们对于这每一个区间维护出它们的区间和,它们是被多大的数阻挡了拓展,以及有多少个点是对应了这个区间的。

现在考虑合并,最关键的是如何处理左区间的右端点区间和右区间的左端点区间。

考虑和正常处理一条鱼能够走多远一样,让它贪心的像左右交替拓展即可,单次合并的复杂度可以做到 \(O(\log V)\)。

整体复杂度为 \(O(n\log n\log V)\)。

Day4 T3 Reconstruction Project

可以证明,对于每一个 \(X\),选择的边必然是小于等于某一个阈值的所有边中的最大生成树。

所以我们从小到大加入每一条边,同时在有替换边的时候维护一下有哪些 \(X\) 是由之前的做贡献的即可,可以暴力维护生成树。时间复杂度 \(O(nm+q)\)。

JOISC 2022 记录的更多相关文章

  1. 「JOISC 2022 Day1」京都观光 题解

    Solution 考虑从\((x_1,y_1)\)走到\((x_2,y_2)\)满足只改变一次方向,则容易求出先向南走当且仅当 \[\frac{a_{x_1} - a_{x_2}}{x_1 - x_2 ...

  2. 使用Visual Studio工具将ActiveX控件的COM类库转换为窗体控件

    1:转换目的 Windows窗体只能继承Windows 窗体控件.如果要承载ActiveX控件,必须生成AxHost派生的包装器控件. 在使用WPF呈现ActiveX控件的时候,需要将com类库(oc ...

  3. Java学习记录:2022年1月13日(其二)

    Java学习记录:2022年1月13日(其二) ​ 摘要:本篇笔记主要记录了在设计类时的一些注意事项,类加载时类中各个部分的加载顺序以及继承和多态的知识. 目录 Java学习记录:2022年1月13日 ...

  4. Windows Server 2016域控制器升级到Windows Server 2022遇到的问题记录Fix error 0x800F081E – 0x20003

    1. 非域控服务器升级 将两台Web服务器和数据库服务器(Windows Server 2016, 2019)成功升级至到Windows Server 2022,非常顺利,一次成功. 直接在Windo ...

  5. 【JOISC 2020 补题记录】

    目录 Day 1 Building 4 Hamburg Steak Sweeping Day 2 Chameleon's Love Making Friends on Joitter is Fun R ...

  6. AcWing刷题记录 - 2022

    AcWing 1813. 方块游戏 思路 枚举,题目说明不管哪一面向上都可以,所以就两面加起来取各个字母的最大值,最后N对字母的最大值相加就是答案 代码 #include<bits/stdc++ ...

  7. MISC 2022/4/21 刷题记录-千字文

    1.千字文 得到名为png的无类型文件,010 Editor查看,png,改后缀,得到二维码 QR扫描,得到一句话"这里只有二维码" 思路不对,binwalk一下,发现有错误信息 ...

  8. Visual Studio 2022 MAUI NU1105(NETSDK1005) 处理记录

    故障说明 MAUI项目是日常使用的项目,一直都好好的 某一天修改了几行代码后,突然项目无法编译了,提示NU1105错误 从Git重新拉取一份之前的代码编译也是同样的错误,经过半天的查阅,尝试了几种方案 ...

  9. 2022 icpc 沈阳站 记录(非题解)

    赛前 大概是赛前三周才突然知道拥有了比赛机会. 赛前训练和vp频率很高,有一段时间cf上都是绿的.比赛的那一周只有一天没在vp,到了周六热身赛我人都有点麻木.(可能正赛也是类似的状态吧) 比赛的过程b ...

  10. Apache coredump 问题发现与解决记录

    目录 Apache coredump 问题发现与解决记录 背景 发现问题 解决问题 方法 1 方法 2 总结 Linux 程序编译链接动态库版本问题 ldd 命令 动态库的编译和 soname 线上 ...

随机推荐

  1. SD Host控制器微架构设计-02

    SD_clk 测试模式下,选择hclk,将扫描链中的时钟保持一致 clk_en表示可以通过软硬件关闭时钟 sd_if模块 模块中设置一些寄存器,我们可以对寄存器进行读写或者对于寄存器中的某些域段进行读 ...

  2. Oracle表结构&数据类型&约束

    1.Oracle 表结构 1.1.创建表名的规范 推荐以"t_xxx" 不能含有"+- "等非法字符,eg:sql create table "t-1 ...

  3. [转帖]六千字带你了解 Oracle 统计信息和执行计划

    https://cloud.tencent.com/developer/article/1616706 大家好,我是 JiekuXu,很高兴又和大家见面了,今天分享下 Oracle 统计信息和执行计划 ...

  4. [转帖]linux设置page cache大小,Linux Page Cache调优在Kafka中的应用

    本文首发于 vivo互联网技术 微信公众号 链接: 作者:Yang Yijun 本文主要描述Linux Page Cache优化的背景.Page Cache的基本概念.列举之前针对Kafka的 IO ...

  5. 【转帖】Java Full GC (Ergonomics) 的排查

    文章目录 1. Full GC (Ergonomics) 1.1 Java 进程一直进行 Full GC 1.2 Full GC 的原因 1.3 检查堆占用 2. 代码检查 3. 解决方式 1. Fu ...

  6. Springboot 使用nacos鉴权的简单步骤

    Springboot 使用nacos鉴权的简单步骤 背景 前端时间nacos爆出了漏洞. 因为他的默认token固定,容易被利用. 具体的问题为: QVD-2023-6271 漏洞描述:开源服务管理平 ...

  7. 限制input框中字数的输入maxlength

    今天产品提出一个需求就是.限制input框中的的值. 当用户超过10个字符时,用户再次输入的时,就不能够输入了. (最后就能够输入10个字符) maxlength=10 <input maxle ...

  8. 纯c#运行开源本地大模型Mixtral-8x7B

    先看效果图,这是一个比较典型的逻辑推理问题,以下是本地运行的模型和openai gpt3.5的推理对比 本地运行Mixtral-8x7B大模型: chatgpt3.5的回答: 关于Mixtral 8x ...

  9. 手撕Vue-实现计算属性

    前言 经过上一篇的学习, 完成了将数据代理到了 Nue 的实例上方,这个我们已经撕完了.接下来要实现的是计算属性,计算属性的实现原理是通过 Object.defineProperty() 来实现的,我 ...

  10. 【主流技术】聊一聊对 Mybatis Plus 的理解与应用

    前言 mybatis plus是一个mybatis的增强工具,在其基础上只做增强不做改变.作为开发中常见的第三方组件,学习并应用在项目中可以节省开发时间,提高开发效率. 官方文档地址:MyBatis- ...