10 2020 档案
摘要:洛谷传送门 CF传送门 今天ChPu437大神讲了这个题,我也来写篇题解加深理解。 Solution 看题,什么又是方案数?我反手就是一个计数DP 我们转化题意,可以将一个人旧的座位和新的座位假装建一条边 那么这就是一张图,并且可能有多个连通块 因为每个连通块之间是互不影响的,所以我们可以分开考虑然
阅读全文
摘要:洛谷传送门 CF传送门 题意 给你一个 \(n\) 个点的图,其中有 \(m\) 条线段。求该图形是否为旋转对称图形。 Solution 我们设旋转 \(x\) 个点可以和原图形重合,那么 \(k\cdot x\) 个点也可以 反过来,已知旋转一圈就是原图形,此时旋转了 \(n\) 个点,我们只要找
阅读全文
摘要:洛谷传送门 CF传送门 题意 有 \(n\) 个硬币,每个硬币有一种颜色,是R,G,B中的一种。可以选择两个硬币进行询问颜色是否一样,每次可以同时询问若干对硬币(一个硬币不能同时属于两对)。最多7次询问,将硬币分为颜色不同的三组。 Solution 这是个思维很棒的交互题。 我们可以先询问两次: 1
阅读全文
摘要:洛谷传送门 为什么总有人说这是长链剖分板子题? Solution 题意非常简洁,这让我少了转化题意这一步。 我们考虑什么样的三个点在树上满足两两之间距离 \(d\) 相等: 对于某一个点,它的子树内以它为LCA,距它 \(d\) 的三个点 对于某一个点,它的 \(d\) 级祖先以及子树内两个以它为L
阅读全文
摘要:洛谷传送门 CF传送门 正好学校考试考到过一个加强版,写一写。 Solution 很明显的DP 如果 \(n=0\) ,设 \(f_i\) 表示到 \(i\) 位置之前不同的子序列数,可以得到两个转移方程: 第 \(i\) 位的字符之前没有出现过,方程就是 \(f_i=2\times f_{i-1}
阅读全文
摘要:题目 Solution 首先,我学过的线性基有三个性质 原序列里的任意一个数都可以通过线性基中的一些数异或得到 线性基里的任意一些数异或起来都不能得到 $0$ 线性基里面的数的个数唯一,在性质一的前提下,有最少的数 (唯一指的是每个序列的线性基的元素数量唯一但线性基不一定唯一) 现在稍微说一下性质三
阅读全文
摘要:原题 Solution 这是个计数题。 我直接正难则反 我们观察题面,发现一个很重要的条件 \(k< \max\{n,m\}\) ,我们这里设 \(n>m\) ,那么也就是如果填入的每个数都不同行,也会有一行是空出来什么都没有的。 我艸,妙啊 继续想,这一行是空的,别的行需要满足乘积为 \(-1\)
阅读全文
摘要:洛谷传送门 CF传送门 今天ChPu437大神讲了这个题,我也来写篇题解加深理解。 Solution 看题,什么又是方案数?我反手就是一个计数DP 我们转化题意,可以将一个人旧的座位和新的座位假装建一条边 那么这就是一张图,并且可能有多个连通块 因为每个连通块之间是互不影响的,所以我们可以分开考虑然
阅读全文
摘要:题目传送门 Solution 我们先考虑其中一个问题: \(A+B>C+D\) 可以简单的移项得到: \(A-C>D-B\) 或 \(A-D>C-B\) 。 看到这里你可能还不知道是什么 再看看数据范围 $4 \leq n \leq 50$ 我直接暴力 说明我们可以找一些复杂度不太大而且和不等式有关
阅读全文
摘要:洛谷题目 CF原题 见过计数DP,也见过字符串的计数DP,但是这样的是第一次见。 Solution 看到要求方案数,那么一定是计数DP了。这字符串你还想用组合数? 但是设计什么状态能够得到最后答案呢?限制有点多诶^_~ 发现题面中的两种运算都是对称的,一个往字母表后,另一个必定往前。 等等,字母表?
阅读全文
摘要:洛谷题目 CF原题 Solution 因为要求区间异或和,所以很自然的想到异或前缀和,即设 \(sum_i=a_1\oplus a_2\oplus \cdots\oplus a_i\) ,那么 \((l,r)\) 的异或和就能用 \(sum_{l-1}\oplus sum_r\) 来表示。 那么我们
阅读全文
摘要:原题 Solution1 考虑如果白牛不能变花牛 如何迅速统计区间牛的数目——利用前缀和统计,设每个牛的 \(v=1\) ,求 \(sum_i=\sum_{j=1}^iv_j\) 那么如何迅速判断是否满足白牛数=花牛数——不妨设白牛的 \(v=1\) ,花牛的 \(v=-1\) ,那么区间 \((l
阅读全文
摘要:原题 Solution 考虑贪心。 那么 \(s_i=11\) 的肯定都选,因为这样不会使答案变劣 重点就是 $10,01,00$ 之间怎么选 首先, $00$ 肯定是最劣的,所以先考虑 $01,10$ 。 有一个结论是:在最优情况, \(s_i=01\) 全部选出,或者 \(s_i=10\) 全部
阅读全文
摘要:这个题的重点是转移方程的优化和匹配字符串的技巧,所以我们分开讲。 Solution——字符串匹配 1.KMP算法 因为是首尾拼接,所以拿KMP算法将nxt数组算出来。可以更简便的运算第 \(j\) 种字符串接在第 \(i\) 种结尾的最小增加量。 for(int k=1;k<=n;k++){ int
阅读全文
摘要:题意 给定 \(a\) 和 \(b\) ,找到一个 \(x\) 使得 \((a\oplus x)+(b\oplus x)\) 的值最小,输出这个值 Solution 考场想法 因为这个 \(x\) 要和两个数进行异或,所以要找一个合适的值。好像又是废话 因为 \(t\leq 10^4\) ,所以不能
阅读全文
摘要:呜呜呜,本蒟蒻第一次做卡特兰数,实在是太菜了。写一个题解加深记忆。 Solution 首先,题里面说明 \(a_2<a_4< \cdots <a_{2n}\) 和 \(a_{2i-1}<a_{2i}\) ,可得偶数位上的数比它前面任意一个数都要大。 那么我们可以将题意转化为:将 $1$ ~ $2n$
阅读全文
摘要:同机房大佬minxu讲解了这个题,使蒟蒻我受益匪浅。 再加上蒟蒻写的计数DP题不超过 0 道,所以遇到这种好题赶紧写题解加深印象。 Solution 因为每一层之间是有互相影响的,所以不能直接用组合数求解,考虑使用计数DP。 我们先处理只在一行内的彩球的方案数 设 \(g_{i,j}\) 表示有 \
阅读全文
摘要:Solution 一句话题意:求架子上和 \(x\) 互质的数的 个数=总个数-和 \(x\) 不互质的数的个数。 那么求和 \(x\) 不互质的数就是经典容斥问题了。 因为所有数都能以一个 \(\prod p_i^{k_i}\) 的形式表示出来,并且一个数的质因子个数最多有七个(因为 $2\cdo
阅读全文
摘要:Solution 本来想的是枚举 \(d\) 的倍数的,以为一定能搜到解的,然后看了眼英文发现“无解输出-1”,就果断去想搜索了。 用啥搜? 因为这个题要求最小数 \(n\) ,所以不能用dfs,应该用bfs+记忆化搜索,这样是可以保证最小的。 然后设计搜啥? 因为只和各位相加和 \(s\) 与 \
阅读全文
摘要:Solution 可以设横向切了 \(x\) 次,则纵着切了 \(k-x\) 刀,为使最小值最大化,所以要切的均匀。那么 \(ans=\left\lfloor\dfrac n{x+1}\right\rfloor\cdot\left\lfloor\dfrac m{k-x+1}\right\rfloor
阅读全文
摘要:这个题真的和关路灯很像,可以去看看。 Solution 有很多题解都没提到怎么看出来的区间DP,这里说一下。(有人做了一些题,就有思路,说不定有没做啥题的) 首先可以明确的是, Sue 不可能经过一个彩蛋不收集,也就是收集的彩蛋的编号应该是连续的。因为路过不收,~~这不zz?~~不就是看着彩蛋价值变
阅读全文
摘要:Solution 先考虑不进行操作时,怎么吞噬可以得到最多的危险次数。 有一个结论是:挑最轻的两条鱼合并,可以使答案最大。 我们简单证明一下:设鱼这个集合为 \(S\) ,那么一次操作就是从中取出两个最小的元素 \(a\) 和 \(b\) ,并把 \(a+b\) 插入 \(S\) 。设某次操作 \(
阅读全文
摘要:调了半天,发现是没开long long Solution 看这个题的时候,第一想法是按时间排序,然后朴素DP,但这样差不多是 \(O(n^2\cdot v)\) 的。 所以我们需要考虑更优的解法。 不难发现,只有当 \(i,j\) 两点满足 \(|x_i-x_j|\leq |t_i-t_j|\tim
阅读全文
摘要:Solution 能够显然的想到每个人传递必然是连续的,也就是对于一个 \(i\) ,他能够到达的区间为 \([i-a_i,i+a_i]\) 。 下一次,就会转移到 \([l,r]\) 中能往左和往右的最远端点,所以我们需要记录最值,那么不难想到用ST表去处理区间最值。 设 \(l_{i,j}\)
阅读全文
摘要:听同机房大佬sky说这是平衡树好题,再加上本蒟蒻刚刚学习平衡树,所以写个题解加深记忆。 Solution 我们看见一操作是移动操作(连个修改都没有),可以想到拿平衡树进行维护整个序列,这是很显然的。 然后看二操作,询问区间某个数的出现次数。 好像我所学过的平衡树是没有这种技能的(可能是我太菜没听说)
阅读全文
摘要:这里介绍两种做法,感觉都很巧妙。 Solution 1 观察题面,发现 \(|a|,|c|\leq 100\) ,所以可以像 \(KMP\) 那样,造一个 \(nxt\) 数组,然后再弄一个 \(cnt\) 数组。 其中 \(cnt_i\) 表示从 \(c_i\) 开始匹配,把 \(a\) 串扫一遍
阅读全文
摘要:算是自己切的第一道计算几何了,写篇题解记录一下。 Solution 首先,我们发现,如果 \((x_1,y_1)\) 到 \((x_2,y_2)\) 是经过 \(ax+by+c=0\) 的,那么一定是从 \(x=x_1\) 或 \(y=y_1\) 到 \(x=x_2\) 或 \(y=y_2\) ,所
阅读全文
摘要:Solution 首先明确的是对每一次询问分开处理。 然后因为要求最大价值,可以想到用DP去做。设 \(d_{i,j}\) 表示前 \(i\) 个元素,以 \(j\) 颜色为结尾的最大价值。可以发现,每一个 \(i\) 最多只会更新一个 \(dp\) ,所以可以将第一维省略掉。 接下来我们思考第 \
阅读全文
摘要:Solution 这个题经过一番思考,发现前面一位和后面一位之间是不会相互影响的,也就是各自的贡献是独立算的。 那我们就直接通过一些排列组合的方式来求出答案即可。 刚刚我提到了贡献,所以我们可以对这个括号序列的每一位进行计算,最后相加。然后发现因为他们是成对匹配的,当你算左括号的时候,右括号已经被算
阅读全文
摘要:Solution 虽然每个题要求的最长序列的满足条件不一样,但是方法总是那一个——DP。 因为前后转移和 \(\gcd\) 有关系,我们可以将 \(\gcd\) 用因子的方式表示。 我们设 \(dp_i\) 表示以 \(a_i\) 结尾的最长序列, \(f_i\) 为所有含有 \(i\) 这个因子的
阅读全文
摘要:题意 松鼠bored在看小马,现在他要逃避掉下来的石头,石头总是落在bored所在的区间的中间。他有两种选择,一种是向左'l',使区间右端点变为原来的区间中间,一种是向右'r',使区间左端点变为原来的区间中间。bored已经想好了自己的行动路线,为了让他可以继续看小马,请你告诉他下落石头从左到右的编
阅读全文
摘要:我这里和别人不一样的是取模加和乘(我觉得这个东西很好,可能会快一点? Solution 首先,它让我们算方案数,所以我们设一个数组 \(F(x)\) 表示完美数恰好为 \(x\) 的排列数,又由这熟悉的恰好,可以再设一个数组 \(G(x)\) 表示完美数至少为 \(x\) 的排列数,那么显然可以得到
阅读全文
摘要:Solution 首先,能够比较明显的看出来,它的路径类型都是形如 $2^i$ ,所以我们能够想到倍增。 然后我们观察数据范围,发现 \(n\leq 500\) 。我去,那我乱搞不就行了 考虑倍增的DP,设状态 \(dp[0/1][s][u][v]\) 为从 \(u\) 到 \(v\) 存在一条以
阅读全文
摘要:题意 在一个长度为 \(n\) 的序列中,找 \(k\) 个长度互不相同的区间互不重叠,求方案数。 Solution 经过简单的计算,发现普通的组合数并不能直接把方案数算出来,因为要考虑的情况实在太多了。那么我们可以考虑另一种能够算出方案数的方法——计数DP。 在上面的题意中,我将本题目的重点加粗了
阅读全文
摘要:Solution 我们可以对前 \(k+1\) 个元素询问 \(k+1\) 次,因为题目中明确说明 \(k<n\) ,所以是不会超的。 这样做的正确性:每次会少一个数,当你少的是第 \(m\) 个数之前的数或 \(m\) 时,返回的会是第 \(m+1\) 大的数,当你少的是 \(m\) 之后的数时,
阅读全文
摘要:Solution 想要得到差最大,只能是最小的自己一组或者全部在一组,因为:如果拿另一个和最小的一组,最小值只有可能最小,最大值只有可能更大,反证完毕。 那么我们可以将 \(a\) 数组从小到大排序,那么现在 \(a_1\) 是 \(\min a\) , \(a_n\) 是 \(\max a\) ,
阅读全文
摘要:Solution 看到是一个异或和的序列,我们可以考异或的性质。 我们构造一个数组 \(b\) : \(b_0=0,b_i=a_i\oplus b_{i-1}\) ,由异或性质得 \(a_i=b_i\oplus b_{i-1}\) ,所以 \(a_l\oplus a_{l+1}\oplus\cdot
阅读全文
摘要:Solution 通过最短路和 \(n\leq 100\) 得知我们可以拿 \(floyd\) 预处理全源最短路。然后因为要换车,所以我们可以考虑dp,设 \(dp_i\) 为 \(i\) 到终点 \(b\) 的最坏换车次数,但是从起点开始可能会有后效性,所以从终点开始,即 \(dp_b\) 为 $
阅读全文
摘要:Solution 看题和 \(\gcd\) 有关系,所以我们可以先考虑一下质数,然后发现对于质数 \(x\) ,当他不 \(lonely\) 即满足条件的时候,是 \(x^2\) 出现的时候,因为 \(x+1>x,x+x>1\) 。 现在考虑合数,分两种情况,一种是形似 \(p^2\) 的( \(p
阅读全文
摘要:Solution 这个题意思很显然,是求 \(n\) 个区间重叠最多的地方和值。 那么我们能想到用差分数组,在扫一遍的过程中维护最大值和 \(pos\) 。 但是需要注意的是,区间最大会到 $10^9$ ,直接差分是不行的,我们需要先对所有 \(b\) 和 \(d\) 进行离散化,然后再去差分。 代
阅读全文
摘要:Solution 我们考虑在第 \(i\) 步时,如果此时是 \(Allen\) ,他会将 \(x_s=t\) ( $0\leq s\leq n,0\leq t\leq 1$ ),此时的 \(v_{s,t}\) 为最大,那么 \(v_{v,1-t}\) 就是最小的,也就是 \(Bessie\) 所做
阅读全文

浙公网安备 33010602011771号