Loading

摘要: 子任务 \(1\) 树,\(n\le 5\times 10^3\) 。 考虑 \(n^2\) 动态规划。 定义 \(f[i][j]\) 表示已 \(i\) 为根,根的值为 \(j\) 的最小代价。 显然 \(j\) 只能取出现过的数,一共 \(n\) 种。 \(f[i][j]=c_i\times[j 阅读全文
posted @ 2021-10-04 17:12 7KByte 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 先膜拜楼上 7k 代码的神仙。 这里提供一个轻工业的做法。 首先考虑没有离开操作,那么对于每个询问,我们只需要知道最早在哪一次操作队列 \(A\) 的大小 \(\ge B\) 。 这可以对所有询问离线,然后将每个询问挂在对应的位置,用线段树维护区间中询问的最小值。 这时一个加入操作,等价于区间减,当 阅读全文
posted @ 2021-10-04 17:11 7KByte 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 首先 \(j\) 为奇数时答案为 \(1\) 。 简单证明,\(j\) 个点之间的重心一定是一个可期待点。 根据重心的性质,所有可能的重心一定构成一条链。 那么已知一个重心为 \(x\) ,如果要移动到一个相邻点 \(y\) ,则断开 \((x,y)\) 后两颗子树大小一定相同。 而 \(j\) 为 阅读全文
posted @ 2021-10-04 17:11 7KByte 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 这应该是 JOISC2021 最简单的一题了。 求前 $k $ 大的曼哈顿距离,先考虑求第 \(k\) 大的距离。 第 \(k\) 大的距离,比较套路的做法是二分答案,然后计算距离 \(\le dis\) 的点对数。 曼哈顿距离不好求,考虑转化为切比雪夫距离,原来的点 \((x,y)\to (x+y 阅读全文
posted @ 2021-10-04 17:10 7KByte 阅读(53) 评论(0) 推荐(0) 编辑
摘要: 大模拟,需要肝。 我们一步步分解。 首先最开始只有第一个个点被感染了,那么我们最先固定第一个人的方向,有 \(4\) 种选择。 对于第一个点初始方向上的点,一定与 \(1\) 号点相向运动,否则它们既不会被感染,也不会感染别人,没有任何作用。我们称这类点为 \(\mathbf{A}\) 类节点 对于 阅读全文
posted @ 2021-10-04 17:09 7KByte 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 求字典序最小的答案,从前往后一次考虑每一位。 即枚举 \(i\) 从 \(1\) 到 \(n\) 判断当前活动加入后是否能够达到 \(k\) 的总数,如果能则加入当前的 \(i\) 。 这样我们只用在线维护当前空缺位置能够加入活动的最大值。 考虑加入活动 \(i\) 后,最多由原来的一个连续区间断开 阅读全文
posted @ 2021-10-04 17:09 7KByte 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 比较清新的数据结构体。 首先观察到 \(n\) 比较小,考虑多个 $\log $ 或 根号算法。 先考虑固定 \(x\) 怎么做,我们可以写一个 calc(l,r) 函数表示时间区间在 \([l,r]\) 内的代价是多少,每次求出区间 \([l,r]\) 中编号最小的日程安排 \((x,y)\),加 阅读全文
posted @ 2021-10-04 17:08 7KByte 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 莫队模板题。 首先这个问题不弱于带修数颜色,所以考虑带修莫队。 同时 \(cnt\) 的取值不超过 \(\sqrt{n}\) 种,所以我们可以用链表维护出现的 \(cnt\) 取值。 对于每次询问,将这 \(\sqrt{n}\) 种 \(cnt\) 从小到大排序,答案就是最短的连续一段满足出现次数之 阅读全文
posted @ 2021-10-04 17:07 7KByte 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 神仙图论题。 给定一张无向图,对于每个点指定两个排名 \(p_i,q_i\),使得对于每条边 \((u,v)\),\((p_u-p_v)(q_u-q_v)>0\) ,也就是相对排名相同。构造两个排列 \(p,q\) 使得 \(p_i\neq q_i\) 的位置最多。 转换一下,对于每条边指定一个方向 阅读全文
posted @ 2021-10-04 17:07 7KByte 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 神仙 \(\rm DP\) 题。 首先,可行性转换为最优性。我们定义状态 \(f[i]\) 表示前 \(i\) 盏灯能够最多能覆盖区间 \([1,f[i]]\) 中所有的灯。 这是最关键的一步,后面的步骤都比较套路。需要注意细节和边界问题。 对于当前的 \(i\) ,只有向左和向右两种选择。 选择向 阅读全文
posted @ 2021-10-04 17:06 7KByte 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 某神奇的函数合并算法——Slope trick。 Codeforces 原文链接 梗概: 对于那么对于一个函数,我们称之为可Slope ,当且仅当函数图像是一个凸包或一条直线。 不失一般性,我们只考虑下凸包。 显然这个函数可以写作一个分段函数。 但是这样写效率太低,我们换一种描述方式。 首先我们记录 阅读全文
posted @ 2021-10-04 17:03 7KByte 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 提供一个不用组合数的方法。 首先对 \(a_i\) 从小到大排序。 我们定义状态 \(f_{i,j}\) 表示当前最大值为 \(a_i\),排列 \(p\) 填了前面 \(j\) 个方案数。 那么有初值 \(f_{0,0}=1\)。 依题意,我们有两种转移。 第一种是在排列后面加入一个高兴的人,枚举 阅读全文
posted @ 2021-10-04 16:59 7KByte 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 很有意思的动态规划。 这道题的关键点在于想到用 string 作为动态规划的 \(f\) 数组。 首先前 \(i\) 次操作只能影响前 \(i+1\) 个位置,所以我们定义状态 \(f[i]\) 表示前 \(i\) 次操作,前 \(i+1\) 个位置字典序最小的串。 对于 OUDR 操作,直接模拟一 阅读全文
posted @ 2021-10-04 16:59 7KByte 阅读(31) 评论(0) 推荐(0) 编辑
摘要: JOISC 2020 有一个团子提交题是个加强版,可以看下。 如果我们将可以得团子得地方看成一个点,如果两个团子有交点,则连边,我们要求得就是最大独立集。 由于只有横竖团子之间有边,所以是二分图,直接跑最大匹配即可。不知道时间是否卡的过去,没有试。 但是观察一下发现相交只有三种情况。 RGW R R 阅读全文
posted @ 2021-10-04 16:58 7KByte 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 找规律题。 不难想出区间 \(\rm DP\) ,但是 \(\mathcal{O}(N^3)\) 已经是信息极限了。 观察这道题的特殊性质。 我们只关注最终序列,每一个位置是否取反,所以我们打一个暴搜的代码。 #include<bits/stdc++.h> #define rep(i,a,b) fo 阅读全文
posted @ 2021-10-04 16:57 7KByte 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 比较套路的题目。 首先我们需要求出 \(S\to T\) 的最短路可行边。 我们分别以 \(S/T\) 为起点,跑最短路得到 \(dist_1,dist_2\) ,如果两端 \(dist\) 之和加上边的长度为最短路,则当前边出现在一条最短路中。 现在从 \(U\to V\) ,免费的一定是一条连续 阅读全文
posted @ 2021-10-04 16:57 7KByte 阅读(50) 评论(0) 推荐(0) 编辑
摘要: DP 神题。 首先观察表格,发现异色的点对无论如何都会产生 \(f\) 的贡献,同色的点对当且仅当该颜色不是它们 \(\rm LCA\) 管辖子树中出现次数最多的颜色时,才会产生 \(2f\) 的贡献。 由于贡献只有 \(0,f,2f\) 的区别,所以我们不难想到,如果我们固定一个路由器的颜色为 \ 阅读全文
posted @ 2021-10-04 16:56 7KByte 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 给你 \(n\) 个字符串,对每个字符串,你可以删除其任意一个字符或让其保持原样,求最后使得字符串字典序不降得方案数。 不难想到一个 \(\mathcal{O}(n(\sum |S|)^2)\) ,我们定义状态 \(f_{i,j}\) 表示前 \(i\) 个字符串,结尾的字符串是第 \(i\) 个字 阅读全文
posted @ 2021-10-04 16:54 7KByte 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 很好奇这个以度数为 \(0/1/2\) 为状态是怎么推出来的。 不应该是定义状态 \(f_{i,0/1}\) 表示以节点 \(i\) 为根的子树中,\(i\) 父亲这条边选不选的最优方案么。 这样当 \(op = 1\) 时,可以从子树中传一条单链上去,否则必须在节点 \(i\) 处匹配完。 htt 阅读全文
posted @ 2021-10-04 16:52 7KByte 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 考虑到 \(N\le 10^4\) ,显然是 \(\mathcal{O}(N^2)\) 可过。 所以我们可以直接枚举两个区间计算贡献。 显然如果我们知道两两区间的距离,可以直接前缀和 \(\mathcal{O}(NQ)\) 求出最终答案。 现在我们计算两两区间的距离,直接枚举并匹配是 \(\math 阅读全文
posted @ 2021-10-04 16:50 7KByte 阅读(71) 评论(0) 推荐(0) 编辑