交互通信一边去。

joisc 2024

Day 1 A. Fish 3

用 A 操作把序列变为不降,然后用 B。扫右端点,合并维护一些段会一起做 A 操作,区间加一次函数。

Day 2 A. Board Game

对于 ,分别最小化代价。可以走到最近黑点然后每步代价为 ,也可以走到一对相邻黑点然后每步代价 。对于第二种,走到一对相邻的需要 步,经过了 个黑点,在之后一个时间 ,代价为 ,对于 不优。于是对 01 bfs 可以求出代价,差分维护一下可得 步时剩下的代价

然后可以按 根号分治。一个是最多走 轮,一个是 是只有 段的凸包。

但是可以直接 记 然后 spfa。注意到对于每个 的凸包两维都是 的,只有 个整点。

Day 2 C. Growing Vegetables is Fun 5

二分答案。若 能匹配 中的元素,枚举一个半圆起点 ,要求对于 中小于 的元素个数在 之间。对相同的 安排顺序。

对于一个 ,合法的 个区间,差分给该区间加

Day 3 A. Card Collection

你说的对。

但是,可以 建自动机,字符集只有 ,发现

然后可以直接做吗,分块。每块只有 种本质不同的 ,等价类分治, 预处理一个块每个状态进来出去是什么?每次查询 。没太懂。

继续观察 DFA。是 DAG。最长路

那就做 次,每次找到非自环走出去。找到某种状态离当前最近的一个,离线,对 扫描线,线段树下标 ,维护 ,线段树二分。

Day 4 A.Escape Route 2

确定一个航班即可确定下一个选哪个。

根号分治。一个是枚举第一个航班,剩下的倍增。一个是枚举航班数多余 的天,直接递推。

Day 4 C. Table Tennis

here

joisc 2025

Day 1 A. Exhibition 3

按画价值排序,依次贪心。设有 个价值为 ,按 的顺序决策选一个集合的区间,使得可以由 个点覆盖集合内所有区间,然后把选出来的删掉。用 选出元素个数 相关复杂度解决每个

先计算选了的最长前缀多长,倍增,每次 check,复杂度

现在已经有一些区间,限制住了 个点可以落在哪里 。再从目前没有选过的且与 有交的 中招编号最小的加进去。如果 包含 ,可以直接加入。如果 无交,则不能加入。否则若 只与一个 有交,那么 会对 取交。否则 与相邻的 有交,当之后其中一个的范围有变化时,可能使另一个的边界缩小。

线段树+set 维护所有与一个区间有交的区间。对每个 取出这样最小的 ,加入一个优先队列依次决策。决策一个后面的区间可能会缩小某个 ,进而影响之前的 对相邻 的限制。优先队列,dfs。

Day 1 C. Bitaro’s Travel 2

出了最后一步,每个点会往能去到的最高的点跳。每个点能去到一个连通块,形成重构树。

按高度从小往大加点,并查集维护。

Day 2 A. Ambulance

一定有两个分界线,前缀去左上,后缀去右下之类。

枚举第一条分界线,对两边分别做第二条分界线的决策,再合并起来。复杂度

Day 2 B. Collecting Stamps 4

每个 AABB 对不合法,每次交换必然能消除一对。

二位数点。

Day 3 A. Bitaro the Brave 3

费用流。

模拟费用流,优先流权值大的,不会退流。

按权值分层,对于一层流量全部相同的,变为二分图最大匹配,hall 定理,。这样相当于选一个后缀,关于 形成凸包。

层每层 条边的凸包,建出来后差分合并。

Day 4 B. Migration Plan

按 dep 建线段树,dfn 为下标。线段树合并,区间查询。

Day 4 C. Uiro

对于一个选的 后面的 的都要选。每个值选的位置都是后缀且递减。

从小到大对每个值贪,st 表维护最小值然后二分。