摘要:
原题链接:P2391。 并查集好题。 首先我们知道,并查集在一个无向图中可以维护两点之间的连通性,判断条件为:\(find(u)==find(v)\)。而对于这道题来说,我们可以用并查集来维护一个序列区间的重叠性或者说区间的连通性。因为题目上说了后面的操作会覆盖前面的操作,所以我们可以考虑倒序进行操 阅读全文
摘要:
题意 定义一种操作为交换 \(a_{i}\) 和 \(a_{i-1}\)。对于一个长度为 \(n\) 的排列,你需要操作若干次,使这个序列变合法,一个序列合法指:满足对于每一个 \(1\le i \le n\),都满足包含 \(a_i\) 的逆序对的个数不超过 \(k\),并且要求最小化操作次数。现 阅读全文
摘要:
题意 给定一个长度为 \(n\) 字符串以及一个数 \(f\),你可以执行以下操作任意次,求最终字符串长度的最小值。 在字符串中选择一个连续的 of,删掉它以及它后面的 \(i\) 个字符,\(0 \le i \le f\)。 数据范围:\(n \le 300\)。 思路 看到数据范围以及字符串中间 阅读全文
摘要:
原题链接:P3694 思路 状态设计 因为这道题 \(m\) 的范围非常小,所以可以用 \(m\) 来作为状态。设 \(dp_{i}\) 表示 \(m\) 支队伍的状态为 \(i\) 时最少让多少偶像出列。 预处理 在转移之前,我们先要预处理出序列的前缀和 \(sum_{i,j}\) 表示第 \(i 阅读全文
摘要:
原题链接:poker 赛时只有 \(40\) 分,改完之后感觉是一道好题,于是就来写篇题解。 题意 有 \(k\) 张扑克牌,\(n\) 种数字,每张牌都有两面,每一面分别写了一个数字,你可以选择打出这张牌的任意一面,但是不能两面同时打,也可以选择不打这张牌。有 \(q\) 个询问,每个询问给定 \ 阅读全文
摘要:
前言 这场 CF 是我赛后打的,vp 赛时没做出来,后来发现是有个地方理解错了,有一些细节没有考虑到。现在换了一种思路来写,感觉更清晰了。 做法 首先需要动态维护三个变量,\(cnt\) 和 \(finishsort\) 和 \(unfinishsort\)。这三个变量分别表示当前数字的个数,已经排 阅读全文
摘要:
前言 看了这道题的几篇题解,感觉讲的方法都比较麻烦,这里讲一个感觉比较简单的方法。 思路 首先判断是否有解。计算一下每一行和每一列的牌的数量,只要有一个是奇数就无解,否则有解。证明显然,偶数一定可以分成两组,在纸上模拟一下也可以得出。 其次看如何构造。对于竖着的牌,显然只对每行有影响,因为列上的颜色 阅读全文
摘要:
前言 赛时只做到了 E 题,赛后才来补的 F 题,还没做出来,看来还是我太菜了。看了题解过后感觉这道题的思路特别巧妙,于是就来写了这篇题解。 题意 简述一下题意。 有 \(n\) 个宝藏位置分别在 \(a_{i}\),另外有一只章鱼有 \(n\) 条触手,每条触手的长度为 \(b_{i}\)。 求有 阅读全文
摘要:
今天在做 ABC318G 这道题,要用到圆方树的知识,于是就去学了圆方树。 学习圆方树首先需要学习点双连通分量以及缩点,此处不多赘述。 圆方树中分两种类型的点:圆点和方点。圆点指的是原来的无向图中的所有点,而方点指的是每一个点双连通分量所代表的点。相当于每一个点双连通分量就是一个方点。将每一个方点向 阅读全文
摘要:
原题链接:ABC318G 显然是圆方树。 点双缩点过后建立一颗以点 \(c\) 为根节点的圆方树,考虑什么情况是合法的。 从点 \(a\) 开始往上跳直到跳到点 \(c\),如果中间走过了某一个方点并且这个方点与 \(b\) 点有直接连边,那么就是合法的;否则不合法。 证明:如果路径中所经过的方点和 阅读全文
摘要:
今天学习了圆方树,并且做了一道和这道题很像的题,于是就又来做了一下这道题。 题意 给定一张不保证连通的无向图。求有多少个点对 \((a,b,c)\) 满足 \(a\) 到 \(c\) 的简单路径上经过了点 \(b\)。 思路 显然圆方树。点双缩点过后构造一颗圆方树,然后考虑如何计算答案。圆方树有一个 阅读全文
摘要:
原题链接:ABC315G 前置知识:扩展欧几里得算法。如果还不会扩欧的话,建议先去做这道题。 题意 给定 \(n,a,b,c,k\)。求有多少个 \(x,y,z(x,y,z \le n)\) 满足 \(ax+by+cz=k\)。 思路 首先看到题目给出的方程式:\(ax+by+cz=k\)。我们会发 阅读全文
摘要:
原题链接:切蛋糕。 题意 给定一个 \(n\) 行 \(m\) 列的蛋糕,问横着切 \(i\) 刀,竖着切 \(j\) 刀后美味度最小的蛋糕的美味度尽可能大。一块蛋糕的美味度为它所含有的小块的美味度之和。 数据范围:\(1 \le n,m \le 14\)。 思路 看到数据范围,我们可以考虑一种类似 阅读全文
摘要:
前言 看这道题有好多巨佬都是用 Tarjan 来做的,在这里讲一个自认为比较简单的做法,(不到 \(30\) 行)。 题意 题意比较难讲,建议自己去看一下翻译,在这里不多赘述。 思路 首先看到题目中间给的一个每一次操作的式子:\(a_{l_{i}}=l_{(i\mod k)+1}\)。仔细观察这个式 阅读全文
摘要:
参考文章:时间复杂度及主定理详解,托比欧:主定理 Master Theorem。 简介 在算法分析中,主定理(英语:master theorem)提供了用渐近符号表示许多由分治法得到的递推关系式的方法。 在初赛题目中,主定理可以用来计算形如 \(T(n)=a\times T(n/b) + O(n^{ 阅读全文
摘要:
原题链接:CF1868B2, 简单版:CF1868B1。 题意 有 \(n\) 个人,第 \(i\) 个人手上最初有 \(a_{i}\) 颗糖。现在每个人可以把自己手中的糖选一些给不多于一个人,同时每个人也只能接受不多于一个人的糖,选出的糖的数量必须是二的次幂。问能否能让每个人最终手上的糖的数量相等 阅读全文
摘要:
题意 给定一个长度为 \(n\) 的序列 \(ans\),初始值全部为 \(0\)。你一共有 \(k\) 个硬币,你可以选择花 \(a_{i}\) 个硬币来使 \(ans_{1}\) 到 \(ans_{i}\) 中的所有数加一。求最终能得到的 \(ans\) 序列中字典序最大的一个。 思路 首先我们 阅读全文
摘要:
题意 给定一个数 \(n\) 和一个包含 \(n\) 个数的序列 \(a\),求出以下式子模 \(998244353\) 的值: \(\sum_{i=1}^{n}\sum_{j=i}^{n} f(i,j)\times (j-i+1)\)。 其中 \(f(i,j)\) 的值为 \(a_{i}\oplu 阅读全文
摘要:
原题链接:ABC239Ex。 题意不多赘述。 看到求期望值,我们想到可以用期望 DP。 设 \(dp_{i}\) 表示最终结果大于等于 \(i\) 时的操作次数的期望值。 那么我们可以得到一个基本的状态转移方程:\(dp_{i}=\frac{1}{n} \times \sum_{j=1}^{n}dp 阅读全文
摘要:
显然是一道计数 dp。 dp 状态应该是最难的一部分了,个人认为这种状态设计得比较巧妙。如果像我刚开始一样设 \(dp_{i,j}\) 表示序列中一共有 \(i\) 个数,序列最后一个数为 \(j\) 的合法方案数的话,那么方程就会变得很不好转移,因为我们不知道当前的 \(j\) 和之前的某些数能不 阅读全文