Solutions

EnumerationDynamic Programming on Ranges (Range DP)Simple Simulating
题意 给一段程序: int qsort(int L, int R) { if (L >= R) return 0; int i = L, j = R; int x = Random.Next(); int x0 = A[x]; assert(L <= x && x <= R); while (i < j) { while (A[i] < …
Jayun 发布于 2023-11-01 07:20:17
00
Game TheoryDynamic Programming on Trees (Tree DP)Binary Answer
题意 给定两个人的树上博弈规则。小 N 初始时在节点 $S$ ,小 Y 需要通过一些操作“强迫”小 N 最后到达节点 $T$ 。小 N 想要让小 Y 的操作尽量多,而小 Y 希望自己的操作尽量少。求解两人都采取最优决策时,小 Y 的操作次数。 每一轮中操作如下: 小 Y 可选的操作有:恢复一条小 N 删除的边 ;或者删除一条边;或者跳过这次操作(不计入答案)。 小 N 接下来执行:如果 …
Jayun 发布于 2023-10-31 21:21:25
00
Li Chao Segment Tree
题目描述 要求在平面直角坐标系下维护两个操作: 在平面上加入一条线段。记第 $i$ 条被插入的线段的标号为 $i$ 。 给定一个数 $k$ ,询问与直线 $x = k$ 相交的线段中,交点纵坐标最大的线段的编号。 强制在线。 题解 李超树板题。在点上维护线段。 代码 const int N = 100005; const int mod = 39989; const double …
Jayun 发布于 2023-10-31 15:59:30
00
Li Chao Segment Tree
Escape Through Leaf 题面 有一颗 $n$ 个节点的树(节点从 $1$ 到 $n$ 依次编号),根节点为 $1$ 。每个节点有两个权值,第 $i$ 个节点的权值为 $a_i,b_i$ 。 你可以从一个节点跳到它的子树内任意一个节点上。从节点 $x$ 跳到节点 $y$ 一次的花费为 $a_x\times b_y$ 。跳跃多次走过一条路径的总费用为每次跳 …
Jayun 发布于 2023-10-31 15:51:30
00
Dynamic Programming on Ranges (Range DP)
题面 法阵由从左至右 $n$ 道魔力屏障组成,每道屏障有一个临界值 $a_i$ ,如果它承受攻击的魔力值 $>a_i$ ,屏障将会破碎,它所承受的魔力攻击将在魔力值减半后(向下取整)继续向右移动,否则该攻击会被该屏障完全拦截,停留在屏障前,屏障的临界值不会减少。当两次攻击相遇时,两次攻击会叠加形成新的攻击,新的攻击的魔力值为两次攻击魔力值之和,新的攻击会继续向右移动。小 Z 可以在法 …
Jayun 发布于 2023-10-31 14:12:43
00
Convex HullSlope TrickBasic GeometrySimple Divide and Conquer (D&C)
题意 在线进行 $n$ 个操作: 把向量 $(x,y)$ 插入到平面内; 给一个向量 $(x,y)$ ,问平面内第 $l$ 个到第 $r$ 个向量之间中的一个向量与该向量的点积最大值。 $n\leq 3\times10^5$ 。 口胡 挺酷炫的。考虑到查询操作的 $x,y$ 相当于给了个直线斜率。那么解肯定在 $[l,r]$ 的凸包上,那么线段树每个点维护一个凸包( …
Jayun 发布于 2023-10-31 11:55:53
00
Alien TrickDecision Monotonicity
题解 这里用了 WQS 二分,二分队列做法。 const int N = 5e5 + 5; inline ll Read() { ll x = 0, f = 1; char c = getchar(); while (c != '-' && (c < '0' || c > '9')) c = getchar(); if (c == '-') f = -f, c …
Jayun 发布于 2023-10-30 22:01:54
00
Heavy-Light Decomposition (HLD)Depth First Search (DFS)
题意 一棵 $n$ 个节点的树,第 $i$ 个点值为 $a_i$ 。 $q$ 次操作,每次操作要么单点修改;要么给出 $k$ 个数,查询这 $k$ 个点中任意两点的简单路径上的所有点的点值总和。 $n,q\leq10^5,\sum k\leq10^6$ 口胡 询问先按 dfs 序排序,然后从第 1 个点往后合并(统计到 lca 的答案)。树剖维护。 然后看答案验证发现错了。 …
Jayun 发布于 2023-10-30 19:59:19
00
Decision Monotonicity
口胡 设 $f_{i,j}$ 表示 $i$ 是第 $j$ 个邮局,有 $$f_{i,j}=\min_{k<i,g\text{二分得到}}\left\{f_{k,j-1}+\sum_{h=k+1}^{g-1}(a_h-a_k)+\sum_{h=g}^{i-1}(a_i-a_h)\right\} $$ 后面那一串满足四边形不等式。
Jayun 发布于 2023-10-30 19:16:33
00
CountEnumeration
题意 $n$ 个数,每个数 $a_i$ ,选 $k$ 个数,一个选取方案的值是异或和。求所有选取方案值的和。 $n\leq10^5,a_i<2^{31}$ 。 题解 加法和异或本质相同。 考虑每一位的贡献,简单组合计数。 代码 const int N = 3e5 + 5, mod = 998244353; inline ll Read() { ll x = 0, f = 1; …
Jayun 发布于 2023-10-30 19:02:53
00