10 2021 档案
摘要:思维不严谨被毒打了。(每日一个挂分小技巧 一个比较经典的 trick,重载小于号 \(a<b\) 为 \(a+b < b+a\),最后答案序列一定是满足 \(S_{p_i} \le S_{P_{i + 1}}\) 。 然后我们直接 DP 即可,设 \(f_{i,j}\) 表示最后一个串是 \(S_i
阅读全文
摘要:今年还是在师大考,一样的机房。 提前 15 分钟进场,敲了个 gedit 配置就发题了。 开题,发现 T1 貌似一眼,用栈维护第 \(i\) 个廊桥装哪些飞机,然后求个前缀和即可,最后枚举国内和国外分几个廊桥更新答案。 然后看 T2,感觉一样的水,直接记 \(f_{l,r}\) 表示区间 \([l,
阅读全文
摘要:给定一个长度为 \(N+M\) 的 \(1/2\) 序列,\(1\) 表示向优先队列中加入一个元素,\(2\) 表示删除最大值,恰有 \(N\) 个 \(1\),\(M\) 个 \(2\),且保证序列合法。问有多少种可能的结束状态,依次加入的必须是一个长度为 \(N\) 的排列。 很好的思维题,观察
阅读全文
摘要:对于两个大小分别为 \(N\times M\) 和 \(M\times N\) 的矩形 \(A,B\),令 \(C=AB\)。 \(|C| = \sum\limits_{k1<k_2<\cdots <k_n} |A(1\sim N;k_1,\cdots,k_m)|\times|B(k_1,\cdot
阅读全文
摘要:很神的数数题,技巧性和思维难度都很高。 我们要求不存在一个位置相同,直接容斥转化为对于每个 \(i\in[0,n]\) 求存在 \(i\) 个位置相同。 题目的限制条件是给定恰好两个排列 \(P,Q\),而不是给定多个排列,考虑其中的意义。 对于排列,等价于一个由若干个环组成的有向图。思考一下不难发
阅读全文
摘要:子任务 \(1\) 树,\(n\le 5\times 10^3\) 。 考虑 \(n^2\) 动态规划。 定义 \(f[i][j]\) 表示已 \(i\) 为根,根的值为 \(j\) 的最小代价。 显然 \(j\) 只能取出现过的数,一共 \(n\) 种。 \(f[i][j]=c_i\times[j
阅读全文
摘要:先膜拜楼上 7k 代码的神仙。 这里提供一个轻工业的做法。 首先考虑没有离开操作,那么对于每个询问,我们只需要知道最早在哪一次操作队列 \(A\) 的大小 \(\ge B\) 。 这可以对所有询问离线,然后将每个询问挂在对应的位置,用线段树维护区间中询问的最小值。 这时一个加入操作,等价于区间减,当
阅读全文
摘要:首先 \(j\) 为奇数时答案为 \(1\) 。 简单证明,\(j\) 个点之间的重心一定是一个可期待点。 根据重心的性质,所有可能的重心一定构成一条链。 那么已知一个重心为 \(x\) ,如果要移动到一个相邻点 \(y\) ,则断开 \((x,y)\) 后两颗子树大小一定相同。 而 \(j\) 为
阅读全文
摘要:这应该是 JOISC2021 最简单的一题了。 求前 $k $ 大的曼哈顿距离,先考虑求第 \(k\) 大的距离。 第 \(k\) 大的距离,比较套路的做法是二分答案,然后计算距离 \(\le dis\) 的点对数。 曼哈顿距离不好求,考虑转化为切比雪夫距离,原来的点 \((x,y)\to (x+y
阅读全文
摘要:大模拟,需要肝。 我们一步步分解。 首先最开始只有第一个个点被感染了,那么我们最先固定第一个人的方向,有 \(4\) 种选择。 对于第一个点初始方向上的点,一定与 \(1\) 号点相向运动,否则它们既不会被感染,也不会感染别人,没有任何作用。我们称这类点为 \(\mathbf{A}\) 类节点 对于
阅读全文
摘要:求字典序最小的答案,从前往后一次考虑每一位。 即枚举 \(i\) 从 \(1\) 到 \(n\) 判断当前活动加入后是否能够达到 \(k\) 的总数,如果能则加入当前的 \(i\) 。 这样我们只用在线维护当前空缺位置能够加入活动的最大值。 考虑加入活动 \(i\) 后,最多由原来的一个连续区间断开
阅读全文
摘要:比较清新的数据结构体。 首先观察到 \(n\) 比较小,考虑多个 $\log $ 或 根号算法。 先考虑固定 \(x\) 怎么做,我们可以写一个 calc(l,r) 函数表示时间区间在 \([l,r]\) 内的代价是多少,每次求出区间 \([l,r]\) 中编号最小的日程安排 \((x,y)\),加
阅读全文
摘要:莫队模板题。 首先这个问题不弱于带修数颜色,所以考虑带修莫队。 同时 \(cnt\) 的取值不超过 \(\sqrt{n}\) 种,所以我们可以用链表维护出现的 \(cnt\) 取值。 对于每次询问,将这 \(\sqrt{n}\) 种 \(cnt\) 从小到大排序,答案就是最短的连续一段满足出现次数之
阅读全文
摘要:神仙图论题。 给定一张无向图,对于每个点指定两个排名 \(p_i,q_i\),使得对于每条边 \((u,v)\),\((p_u-p_v)(q_u-q_v)>0\) ,也就是相对排名相同。构造两个排列 \(p,q\) 使得 \(p_i\neq q_i\) 的位置最多。 转换一下,对于每条边指定一个方向
阅读全文
摘要:神仙 \(\rm DP\) 题。 首先,可行性转换为最优性。我们定义状态 \(f[i]\) 表示前 \(i\) 盏灯能够最多能覆盖区间 \([1,f[i]]\) 中所有的灯。 这是最关键的一步,后面的步骤都比较套路。需要注意细节和边界问题。 对于当前的 \(i\) ,只有向左和向右两种选择。 选择向
阅读全文
摘要:某神奇的函数合并算法——Slope trick。 Codeforces 原文链接 梗概: 对于那么对于一个函数,我们称之为可Slope ,当且仅当函数图像是一个凸包或一条直线。 不失一般性,我们只考虑下凸包。 显然这个函数可以写作一个分段函数。 但是这样写效率太低,我们换一种描述方式。 首先我们记录
阅读全文
摘要:很有意思的动态规划。 这道题的关键点在于想到用 string 作为动态规划的 \(f\) 数组。 首先前 \(i\) 次操作只能影响前 \(i+1\) 个位置,所以我们定义状态 \(f[i]\) 表示前 \(i\) 次操作,前 \(i+1\) 个位置字典序最小的串。 对于 OUDR 操作,直接模拟一
阅读全文
摘要:提供一个不用组合数的方法。 首先对 \(a_i\) 从小到大排序。 我们定义状态 \(f_{i,j}\) 表示当前最大值为 \(a_i\),排列 \(p\) 填了前面 \(j\) 个方案数。 那么有初值 \(f_{0,0}=1\)。 依题意,我们有两种转移。 第一种是在排列后面加入一个高兴的人,枚举
阅读全文
摘要:JOISC 2020 有一个团子提交题是个加强版,可以看下。 如果我们将可以得团子得地方看成一个点,如果两个团子有交点,则连边,我们要求得就是最大独立集。 由于只有横竖团子之间有边,所以是二分图,直接跑最大匹配即可。不知道时间是否卡的过去,没有试。 但是观察一下发现相交只有三种情况。 RGW R R
阅读全文
摘要:比较套路的题目。 首先我们需要求出 \(S\to T\) 的最短路可行边。 我们分别以 \(S/T\) 为起点,跑最短路得到 \(dist_1,dist_2\) ,如果两端 \(dist\) 之和加上边的长度为最短路,则当前边出现在一条最短路中。 现在从 \(U\to V\) ,免费的一定是一条连续
阅读全文
摘要:找规律题。 不难想出区间 \(\rm DP\) ,但是 \(\mathcal{O}(N^3)\) 已经是信息极限了。 观察这道题的特殊性质。 我们只关注最终序列,每一个位置是否取反,所以我们打一个暴搜的代码。 #include<bits/stdc++.h> #define rep(i,a,b) fo
阅读全文
摘要:DP 神题。 首先观察表格,发现异色的点对无论如何都会产生 \(f\) 的贡献,同色的点对当且仅当该颜色不是它们 \(\rm LCA\) 管辖子树中出现次数最多的颜色时,才会产生 \(2f\) 的贡献。 由于贡献只有 \(0,f,2f\) 的区别,所以我们不难想到,如果我们固定一个路由器的颜色为 \
阅读全文
摘要:给你 \(n\) 个字符串,对每个字符串,你可以删除其任意一个字符或让其保持原样,求最后使得字符串字典序不降得方案数。 不难想到一个 \(\mathcal{O}(n(\sum |S|)^2)\) ,我们定义状态 \(f_{i,j}\) 表示前 \(i\) 个字符串,结尾的字符串是第 \(i\) 个字
阅读全文
摘要:很好奇这个以度数为 \(0/1/2\) 为状态是怎么推出来的。 不应该是定义状态 \(f_{i,0/1}\) 表示以节点 \(i\) 为根的子树中,\(i\) 父亲这条边选不选的最优方案么。 这样当 \(op = 1\) 时,可以从子树中传一条单链上去,否则必须在节点 \(i\) 处匹配完。 htt
阅读全文
摘要:考虑到 \(N\le 10^4\) ,显然是 \(\mathcal{O}(N^2)\) 可过。 所以我们可以直接枚举两个区间计算贡献。 显然如果我们知道两两区间的距离,可以直接前缀和 \(\mathcal{O}(NQ)\) 求出最终答案。 现在我们计算两两区间的距离,直接枚举并匹配是 \(\math
阅读全文
摘要:一看就是什么正经的题目,乱搞就完事了。 输出的规模应该是 \(\sqrt{N}\) 级别的,否则也不会让输出。 分析一下,每种玩具有 \(c_i\) 个,那么可以玩 \(\prod (c_i+1)\) 天。 所以写个暴搜就行了。状态 \((n,\ last,\ sum)\) 表示剩下的数乘积为 \(
阅读全文
摘要:0x00 前置芝士 必备芝士 \(Binary\ \ Index\ \ Tree\) \(Persistent\ \ Segment\ \ Tree\) 什么?不会主席树,点击luogu题解然后成为大牛(讲解真的很好,Orz神犇 ~当然,如果能提前了解下线段树套线段树和线段树套平衡树会更好(洛谷日报
阅读全文
摘要:本来不想写的,结果还是写了(别问我为什么 \(Day1\ T1\) 格雷码,开题发现题面很长,预感不好 问题的本质是提供格雷码的构造方法,求构造有序集合中的第$K$个格雷码 开始想着如何去推公式(某凯的疑惑),半个小时没推出来,只好回去想如何去优化模拟 显然我们并不用把前$K$个格雷码全部列出来,显
阅读全文
摘要:Day -2 在家自己复习,感觉状态不是很好。打了几道模板SAM带线段树合并维护endpos集合的题,调了很久,心态有点崩。 Day -1 早上出发赶火车,在火车站前和教练学长回合。 顺利登上火车。中途还要换乘。第一次做高铁,体验还是不错的。就是火车上网络不咋样,想刷下洛谷都刷不成。后来试着连高铁上
阅读全文
摘要:给定一个长度为 \(N\) 的序列 \(D\),每次可以选择向一个方向走长度为 \(D\),问是否能走到 \((A,B)\)。 很久没有做到这种让人眼前一亮的题目。 首先我们考虑如果只能走正方向,那么就是将这堆数分称两堆,使得两堆数之和分别为 \(A,B\)。 对于这个简化的问题,目前最优的方法是
阅读全文
摘要:给定 \(N,M\),求有多少个大小为 \(k\) 的可重集满足所有元素之和为 \(N\),同一个数最多出现 \(M\) 次。对于每个 \(k=1\sim n\) 求出答案。 我们可以将大小为 \(k\) 的可重集转化为长度为 \(k\) 的不降序列,满足第一个数 $>0$,不存在 \(M\) 个
阅读全文
摘要:跳跃表,简称跳表。一种链式数据结构,可用于支持平衡树的操作。 【模板】普通平衡树 跳表基于随机化,每个节点以 \(\frac{1}{2}\) 的概率保留一层,\(\frac{1}{4}\) 几率保留两层,依次类推。 期望时间复杂度 $\mathcal{O}(N\log N)$,实际运行不逊于主流平
阅读全文
摘要:对于序列 \(a(n)\),我们称 \(b(m)\) 为 \(a\) 的子序列,当且仅当存在 \(c(m)\) 使得 \(\forall 1\le i<m,c_i< c_{i + 1}\) 并且 \(\forall 1\le i \le m, a_{c_i} = b_i\)。 一个序列的子序列有 \
阅读全文
摘要:首先我们要求集合中所有方案的代价之和,简单分析下不难发现,如果每个位置都传球了,那么每个位置都少传一个球的方案一定会被重复统计。 所以答案就是总方案数减去每个位置都至少传一个球的方案数。 考虑 \(\prod x_i\) 的意义,等价于传球后从每个人手中拿出一个球的方案数。 因此我们将每个人的球排成
阅读全文

浙公网安备 33010602011771号