随笔分类 - 题解
摘要:题意:给定 \(n\),以及 \(m\) 对 \((a_i,b_i)\),你需要构造一个 \(n \times n\) 的 \(01\) 矩阵使得每行每列都恰好有 \(m\) 个数为 \(1\),且 \((a_i,b_i)\) 的位置上的数必须为 \(1\)。 首先我们考虑 \(m=1\) 的情况,
阅读全文
摘要:题意:给定 \(n(n \le 10^6)\) 和 \(k(k \le n)\)。构造一个长度小于等于 \(25\) 的序列 \(a\) 满足: 1. 不存在一个子序列的和为 \(k\)。 2. 对于 \(1 \le i \le n,i \ne k\),存在一个子序列的和为 \(i\)。 看到长度为
阅读全文
摘要:原题链接:P10371。 首先我们设 \(l_{i,0/1}\) 表示 \(i\) 左边的第一,二个比 \(a_i\) 大的数的位置。\(r_{i,0/1}\) 同理。 考虑一个区间 \([L,R]\) 在什么时候满足条件,设 \(p,q\) 分别为区间中最大 / 次大值的位置,我们分三种情况讨论。
阅读全文
摘要:题意:求一棵 \(n\) 个节点的有根二叉树的叶子节点的期望个数。 设 \(f_n\) 表示 \(n\) 个点的二叉树个数,\(g_n\) 表示 \(n\) 个点的所有二叉树的叶子节点数之和。 显然 \(f_n\) 为 \(\text{Catalan}\) 数,考虑如何求 \(g_n\)。一个结论是
阅读全文
摘要:题意:一个长度为 \(n\) 的排列合法当且仅当逆序对数为 \(k\),且一个排列的价值定义为 \(\sum a_i \times i\)。给定 \(n\) 和 \(k\),求出所有合法排列的价值和。 容易想到 \(\text{dp}\)。 会发现如果直接 \(\text{dp}\) 的话,每一个位
阅读全文
摘要:题意:给定一个 \(n\) 个点 \(m\) 条边的无向图,每个点的初始颜色为 \(0\)。一次操作是将一条边的两个端点的颜色翻转。求是否能通过若干次操作使得最终有 \(k\) 个颜色为 \(1\) 的点。 首先考虑什么情况下无解。会发现每一次操作,颜色为 \(1\) 的点的数量变化一定是 \([0
阅读全文
摘要:题意:求有多少个排列满足:对于每一个 \(2 \le i \le n\),\(a_i > a_{\frac{i}{2}}\)。 首先我们会发现这些数之间的大小关系形成了一个完全二叉树,因为每一个 \(a_i\) 都必须小于 \(a_{2\times i}\) 和 \(a_{2 \times i +
阅读全文
摘要:题意:给定一个由数字和加号和乘号组成的字符串,求出 \(\sum s(i,j)\)。其中 \(s(i,j)\) 表示 \(i\) 到 \(j\) 字符组成的表达式的值。 考虑 \(\text{dp}\)。 设 \(dp_{i}\) 表示以 \(i\) 为起点的所有表达式的值之和。那么我们考虑以一些加
阅读全文
摘要:很巧妙的一道题。 首先会发现如果最终 \(\varphi(N)=1\) 的话一定是通过很多次从 \(2\) 这个因子变到 \(1\) 的。而这个函数每迭代一次,就会有且仅有一个 \(2\) 的因子变为 \(1\)。所以题目转化为了求 \(N\) 在函数迭代过程中一共会产生多少个 \(2\) 的因子。
阅读全文
摘要:很巧妙的一道题。 为了让 \(\text{LIS}\) 长度最小,我们肯定先将 \(b\) 数组降序排序,这样 \(b\) 自身对 \(\text{LIS}\) 的贡献最小。 考虑是否存在一种插入方式使得最终 \(a\) 的 \(\text{LIS}\) 长度和最初 \(a\) 的 \(\text{
阅读全文
摘要:题意:给定一个长度为 \(n\) 的排列 \(a\),\(a_i \in [0,n-1]\)。你可以将这个排列进行循环移位,最小化 \(\sum_{i=1}^{n} \text{mex}_{j=1}^i a_j\) 的值。 首先我们可以先计算出最初情况下每一个 \(i\) 位置的 \(\text{m
阅读全文
摘要:考虑分别计算 \(p\) 和 \(q\)。 按照期望的定义,\(q\) 应该等于方案的总数,也就是 \(s^k\),其中 \(s\) 表示一共有多少个不同的组。 考虑如何求 \(p\),我们先只计算第 \(i\) 组对 \(p\) 的贡献。如果第 \(i\) 组一共被选了 \(1\) 次,那么贡献为
阅读全文
摘要:首先有一些性质。因为保证有解,所以 \(a_i\) 一定都是 \(2\) 的倍数(必须一来一回)。并且总的步数应该为 \(\sum a_i\)。 先考虑 \(n \le 2\) 的情况,这时我们可以分情况讨论。因为每一条线段都会被来回走两次,所以我们可以先把每一个数都除以 \(2\)。 若 \(a
阅读全文
摘要:一次操作相当于把 \(a\) 异或上 \(b\),修改开关的一位相当于将这一位异或上 \(1\)。 会发现一个很神奇的性质:初始开关对灯的影响和改变开关状态对灯的影响是独立的。而前者的影响是固定的,所以我们可以只考虑改变开关状态对灯的影响。假设一共需要 \(k\) 次操作能使所有灯关闭,如果我们在第
阅读全文
摘要:可以把从每个字符开始的操作过程看成是一棵树,对于每一个字符我们都维护一颗树(表示从这个字符开始操作的过程)。因为后面的操作会覆盖掉前面的,所以我们考虑从最后面的操作开始往上建树。首先 \(a-z\) 都指向自己(因为自己如果不变的话值还是自己),对于每一次操作 \((x,s)\)。我们可以依次合并
阅读全文
摘要:原题链接: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\) 个询问,每个询问给定 \
阅读全文

浙公网安备 33010602011771号