合集-题解
摘要:To 题目 主要思路:全排列 + 亿点点小技巧。 不会全排列的可以先把这道题过了 \(P1706\)。 这道题的难点就在于有重复的单词,只记一次。 第一个想法是将所有以生成的单词记录下来,然后每次判断是否为已存在,但是很明显,你不是 \(TLE\) 就是 \(MLE\) 有哪位勇士去试一下吗。 所以
阅读全文
摘要:To SP8496 这道题可以用到前缀和思想,先预处理出所有的结果,然后 \(O(1)\) 查询即可。 注意: 是不能被 \(x^2(x≠1)\) 的数整除的数叫做无平方数。 \(d\) 可以为 \(0\)。 即对于每次询问,给出 \(s[b][d]-s[a-1][d]\) 的值。 #include
阅读全文
摘要:To CF 这道题依题意可得最终答案为序列长度-最长子序列长度。 数据范围至 $100000$ 用 $O(n^2)$ 的复杂度肯定会炸。 用 $O(nlogn)$ 的复杂度却在第 $21$ 个测试点莫名出错。 于是换一种思路可得 $dp[s]=dp[s-1]+1$ 即类似于求最长子序列长度。 最后用
阅读全文
摘要:根据题意,给定一个 $2\times2$ 的仅包含 $0$ 和 $1$ 的二维数组。定义一个操作,每次可以选择一行和一列将其变成 $0$,求最小操作次数。 思路:根据枚举可得共有 $14$ 种矩阵形态,通过观察可得: 当矩阵中 $1$ 的数量为 $0$ 时,即只有一种形态,其最小操作次数为 $0$。
阅读全文
摘要:To CF 这道题是排序贪心,将原序列排序后统计答案即可。 但是直接统计会超时,因为排序后具有单调性,所以可以进行一点优化,这样,便可以通过此题。 而这道题的优化在于单调性,因为 \(a[i+1]\) 必然大于 \(a[i]\),所以当 \(a[j]\) 无法与 \(a[i]\) 匹配时,也就可以排
阅读全文
摘要:\(To\) \(SP96\) 这是一道比较简单的 \(bfs\) ,初学者可以锻炼一下自己理解题意和改代码的能力。 题目中有几个细节: \(n\) 和 \(m\) 的输入顺序,应该先输入 \(m\) ,再输入 \(n\) 。 输入时如果用的是 \(scanf\) ,要注意对换行符的处理。 当 \(
阅读全文
摘要:题意 有三扇门,每扇门都有一把钥匙与该门上的数字相对应,若数字一样就可以打开。 其中有两扇门后有钥匙,一扇门后为空。 现拥有一把钥匙 $x$,给出三扇门后的钥匙(若为 $0$ 即门后没有钥匙),询问是否可以将三扇门都打开。 思路 想要打开三扇门,就需要有三扇门的钥匙,那么前两扇可以打开的门后就必须要
阅读全文
摘要:题意: 给定一队人的身高,将其分成两队,问能否实现前面的人均低于后面的人至少 $x$ 个单位长度。 做法: 将这队人的身高进行排序,$h_1 \sim h_n$ 即为第一队,$h_{n+1} \sim h_{2n}$ 即为第二队,两队前后进行比较即可。 证明: 将其身高进行排序之后,若第 $i$ 与
阅读全文
摘要:给定一个矩阵,判断最少将多少个格反转后使得旋转零度,九十度,一百八十度,二百七十度相等。 枚举矩阵每个位置是 $0$ 还是 $1$,若已经判断过则跳过,全统 $1$ 和全统 $0$ 取操作数小值。 #include<cstdio> #include<iostream> #include<cstrin
阅读全文
摘要:题意:输入每个团队及团队的解决问题数,若是第一次解决则获得两个气球,其余获得一个气球。 做法:开一个数组记录是否为第一次解决该问题,直接模拟。 #include<cstdio> #include<iostream> #include<cstring> using namespace std; int
阅读全文
摘要:题意:模拟一个 $n$ 位密码锁。 做法:直接模拟,注意往后推,即若为 $U$ 变为 $D$,若为 $D$ 变为 $U$。注意 $0$ 和 $9$ 进行操作时的特判。 #include<cstdio> #include<iostream> using namespace std; int s[105
阅读全文
摘要:题意:输入一个长度为 $3$ 的字符串,判断其是否为 $YES$,忽略大小写。 做法:输入字符串,直接判断。 #include<cstdio> #include<iostream> using namespace std; string s; int t; int main(){ scanf("%d
阅读全文
摘要:题意:给定一个数 $n$,找出一个数为 $10^k \leq n$,求二者的差。 建立一个数组,储存 $10^k$,每次直接查询求差输出。 注意数据范围。 #include<cstdio> #include<iostream> using namespace std; long long s[15]
阅读全文
摘要:给定一个字符串,每天可以记忆三个字符,求书写出整个字符串的天数。 每次确定要记忆的三个字母,并向后寻找,若有非三个字母其中一个,则重新开启一天记忆三个字母。 #include<cstdio> #include<iostream> using namespace std; int t; string
阅读全文
摘要:### 题意 给定一个无向图,其中至多有 $50$ 个结点,求是否有欧拉回路。 ### 题解 很明显就是一个无向图求欧拉回路的板子,我们用 $\tt{Hierholzer}$,先说存图,要明确的一个点是这个无向图里是有可能有重边的,所以我们要注意记录的时候不应是单独地记录某一条边是否存在,而是要记录
阅读全文
摘要:赛场上思路出来了但是代码没调出来。 首先考虑右端点,很明显,要让操作后的序列字典序尽量地大,那么就要使操作后的序列第一个数尽量地大,考虑 $n$ 或 $n-1$,如果 $n$ 在原序列的第一个位置,那么此时无论怎么调整都无法使得它在新序列的第一个位置,此时就要考虑让 $n-1$ 在新序列的第一个位置
阅读全文
摘要:对于第二种操作,很容易想到只有 $1$ 或 $2$ 两种答案,若该区间内存在 $01$ 这个子序列,那么答案为 $2$ 反之为 $1$.可以通过对该 $01$ 串做一个前缀和,若出现 $01$ 这个子序列就累加,最后判断左右端点是否相等即可,时间复杂度 $O(n)$. 对于第一种操作,$\text{
阅读全文
摘要:### 总述 此题用区间 dp 解决,二维前缀和优化。 ### 朴素做法 **阶段**:自上而下数每一层。 **状态**:$dp_{i,l,r}$ 表示自上而下数第 $i$ 行中在 $[l,r]$ 摆积木的方案数。 **状态转移方程**:根据题意可知,若要在 $[l,r]$ 中摆积木,那么 $[l,
阅读全文
摘要:### Updated #### 2023.07.05 修正了一处笔误,在此感谢@[DWT8125](https://www.luogu.com.cn/user/390228) ### 题解 首先先推一下柿子,因为数据范围很大,所以考虑矩阵加速递推。 根据题意给的递推式,可得: $$\begin{a
阅读全文
摘要:先注意到我们娱乐值损耗的多少只与最后一场电影有关系,所以假设最后一场电影看的下标为 $k$,那么最后就要减去 $d \times k$。 得出这个性质之后开个小根堆反悔贪心即可,首先 $a_i0$ 的,如果还没到 $m$ 场电影,我们就直接往里塞就可以,如果到了,我们就进行反悔操作,取出已选的贡献最
阅读全文
摘要:首先这是一道很明显的换根 dp。 首先注意到要拼接数,所以我们可以先处理出 $num_i=10^{x}$,使得 $10^x > a_i > 10^{x-1}$,这样方便我们后面算贡献。 我们以这棵树为例子来推状态转移方程。 $,影响到的点 $(x,y)$ 均要满足 $x>i$,那么我们每次就必须要按照从上往下的顺序进行,否则上面的点无法影响到,即从第一行开始操作。
阅读全文
摘要:原题链接 -> 题意 给定一个长度为 $n$ 的环,求一个 $a_j \ge b_i$ 且距离最近的点。 题解 对于 $20%$ 的点,直接暴力向左右扩展就可以。 对于 $100%$ 的点,先断环成链,三倍空间。我们注意到随着区间的扩大,最大值是呈非严格单调递增的状态的。因为区间扩大的同时也包含着原
阅读全文
摘要:$\tt{A\ Even\ Triangle}$ 一道送分的题,为了不要平均分太低。 首先可以发现,每一行的项数其实是一个形如 $2,4,6,8,\dots$ 的等差数列,那么可以求出最后一项就是 $2 \times (\frac{\frac{(2+n)*n}{2}}{2}-1)$,那么前一项就是
阅读全文
摘要:模型建立 首先,题意应该很清楚了,我们可以拟一条数轴,通过样例一来辅助理解题目,建立模型。 由此易得 $A'=A+f_At$ $B'=B+f_Bt$. 因此我们就可以得出 $A\ B$ 的位置,也易得 $AB$ 的长度。 这是模型的建立,涉及到一点点入门的平面几何。 10pts/20pts/50pt
阅读全文
摘要:因为要使求得的排列链最长,所以我们可以先思考最长是多少。 因为排列链的固定性是向下递减,所以每次固定性减 $1$ 所得的排列链肯定是最优情况。 所以我们考虑每次交换元素时令固定性只减 $1$。 那么在刚开始的操作中,要使排列链无序,那么就令任意两个元素交换其位置,为了方便后续操作,将 $1$ 和 $
阅读全文
摘要:题意 给定一个正整数 $n$,构造一个排列(一个长度为 $n$ 的序列,其中由 $1 \sim n$ 构成,不重复)使其权重最小。 思路 既然要使权重最小,那么就让每一个位置 $i$ 上的元素为 $i+1$ 或 $i−1$,且保证不重复(开个数组记重),可以证明当 $i$ 大于等于 $2$ 时,$i
阅读全文
摘要:题意 给定一个长度为 $n$ 的序列 $a$ 以及一个长度为 $m$ 的字符串 $s$,初始 $s$ 均为 $\text{B}$,第 $i$ 次操作可以把 $s_{a_i}$ 或 $s_{m+1-a_i}$ 修改为 $\text{A}$,求修改过后的字典序最小的 $s$。 思路 因为要使字典序最小,
阅读全文

浙公网安备 33010602011771号