随笔分类 - Codeforces
摘要:题意:有一颗基环树,求它的最小点覆盖。 题解:先考虑环,对于环上的任意一条边$u->v$,一定只有2中情况,$u$覆盖的情况或$v$覆盖的情况。然后不难发现,假如我们将某个点覆盖,那么它的儿子一定不能覆盖,这其实就是树形dp。所以只有对覆盖$u$和$v$的情况分别跑一边树形dp然后取最小即可。 代码
阅读全文
摘要:题意:有一组序列$a=[a_0,a_1,...,a_]$,每次操作得到一组新序列$b=[b_0,b_1,...,b_]$,\(b[i]=gcd(a_i,a_{(i+1)\mod n})\),问你最少操作几次可以是新序列所有元素相等. 题解:所有元素相等,即最后所有$b_i=gcd({a_0,a_1,
阅读全文
摘要:题意:一共有$n$个人,每个人都要送礼物给别人,每个人都要收到礼物,但每个人都有自己相送的人,序列$a$表示第$i$个人想送礼物给$a[i]$,输出长度为$n$的序列,表示$i$送礼物给$b[i]$. 题解:先用set将能给礼物的先给了,即将没收到礼物的$a[i]$先给了,给过就erase掉,并且记
阅读全文
摘要:题意:有一组排列$a=[1,2,3,...,n]$,可以将排列的所有元素向右移动$k$个位置,然后选任意两个元素交换位置,最多交换$m$次,现在给你操作完成后的序列,问你有多少种可能的$k$值,使得原排列能得到现在的序列. 题解:将所有$a[i]$--,这样在每个元素移动$k$个位置后,得到$a[i
阅读全文
摘要:题意:给你一个序列A,每个元素为$+ \ x$或者$-$,假设$S$是$A$的一个子序列,那么便利$S$,$+\ x$表示贡献加上$x$,$-$表示贡献减去$S$中最小的$x$,并且在序列中删去这个$x$,问所有子序列的和为多少(\(\mod 998244353\). 题解:先假设一个子序列集合$S
阅读全文
摘要:题意:有一个$n$个结点的树,给你$n-1$个$a_i$和$b_i$,表示将第$i$条边断开后两个连通块中的最大顶点,现在要你根据给出的信息还原出这颗树. 题解:首先无论怎么分,$a_i$和$b_i$中一定有一个是的值是$n$.然后我们将顶点排序,按照$n$为根结点来构造.那么序列中出现次数最少的那
阅读全文
摘要:题意: \(f(i)=x\),$x$为最小的不能整除$i$的数.求$\sum^_f(i)\ mod\ 10^9+7$. 题解:首先,\(1,2,...,x-1|i\),即$i$一定是$lcm(1,2,...,x-1)$的倍数,我们现在来看$f(i)$的值,当$f(i)=2$时,$i$的最小值是$1$
阅读全文
摘要:题意:给你一个字符串,选择一个前缀,使其不断复制,直到$len>=k$,如果$len>k$,删去多余的尾部,问你能得到的字典序最小的字符串. 题解:基本思路和E1一样,比较后面的字符和$s[1]$,大于就直接break,小于就继续,等于的话,我们要先找到$s_{1...x}$和$s_{i,i+1,.
阅读全文
摘要:题意:从$l$每次加$1$加到$r$,每次操作后贡献为每一位数字的改变数,问总贡献是多少 题解:这题问题在于处理$9,19,29,...,89$和$99,199,...,899$,这样的会产生额外贡献的数,不难发现,$ 9,19,29,...,89$这些数,每10个数就会产生额外的2个贡献,以此类推
阅读全文
摘要:题意:有长度为$k$的数组$b$,问你是否能构造一个长度为$2k-1$的数组$a$,使得对于$a_1,a_2,...,a_{2i-1}$,其中位数是$b_i$. 题解:首先要能看出一个结论,即对于一个有序的序列,我们在其中位数左边添加两个数,会使得中位数的位置左移一个,在其右边添加两个会使得中位数的
阅读全文
摘要:题意:有$2k$个队伍进行$2k-1$场比赛,1和2比,3和4比,...,每两两决出胜者进行下一轮,现在给你一长度为$2^k-1$的字符串,每个位置代表按顺序的比赛结果,$0$表示下标小的队伍胜,$1$表示下标大的队伍胜,?表示未知,有$q$个询问,每次修改字符串的一个字符,问最后有多少可能的冠军。
阅读全文
摘要:题意:有一$01$串,$?$既可以表示成$0$也可以表示成$1$,问其所有子串中,问有多少不出现相邻相同字符的子串。 题解:根据题意,合法串一定0101这样的,那么当前位置的1/0肯定是从上个位置的0/1转移过来,如果上个位置的字符和当前相同,那么就重新开始。由此可以写出状态转移方程:\(dp[i]
阅读全文
摘要:题意:有一字符串,可以将其任意排序,构造完后可以相邻字符两两交换位置,花费为$1$,构造一个复原成原串花费最多的串。 题解:感觉还是不好证明啊,结论就是相同的字符连续在一起一定最优,因为最多只有$4$个字符,所以我们可以全排列,花费就是相对于原串的逆序对数,这里官方题解给的暴力求逆序对的方法感觉很巧
阅读全文
摘要:题意:有一长度均相同的$01$串集合,每次询问给你一个同长度的$01$串,去和集合中的每个$01$串匹配,若位置$i$的元素相同,则贡献加$w_i$,输出集合中有多少串匹配完后贡献不大于$k$。 题解:集合中元素很少,最多$12$个。先用桶标记集合中的串,然后$O((1<<n)^2)$预处理所有情况
阅读全文
摘要:题意:有一颗树,你需要从根节点开始bfs,将搜到的点按顺序放入栈中,给你一个序列,你需要判断这个序列是否是某一种栈的情况. 题解:存一下序列中每个值的位置,然后对于每个父亲结点,按照所存每个值的位置对儿子进行排序,最后跑bfs判断即可. 代码: #include <bits/stdc++.h> #d
阅读全文
摘要:题意:有一颗树,每个结点都有一个取值范围$[L_i,R_i]$,答案为所有相邻点的绝对值之差之和,现在要你确定每个点的值,求最大答案. 题解:求相邻点的最大绝对值之差,那么肯定是取两个点的左端点和右端点最优,树形dp板子题. 代码: #include <bits/stdc++.h> #define
阅读全文
摘要:题意:将$2n$个点两两相连形成$n$对,对于任意两个点对$A$和$B$,要求至少满足其中一条:1.$A$和$B$的某一个完全包含于另一个中 2.$A$和$B$的长度相等.问你一共有多少种方案. 题解:假设第一个区间的左端点为$1$,右端点为$x$,对$x$分两种情况来分析. 1.\(x> n\),
阅读全文
摘要:题意:有$n$个座位,刚开始有$k\ (k\le \frac{2})$个人坐着,你可以让某个人$i$移动到空的座位$j$,花费$|i-j|$,问你最少花多少使得刚开始坐着人的位置全部空出来. 题解:首先想了一下,这题必然不能贪心,$0$对于某两个$1$来说距离相等的话,状态就不确定.那么就只能考虑d
阅读全文
摘要:题意:在一维坐标轴上有很多小机器人,它们只能一直向左或者向右每次移动一个单位,在$x=0$和$x=m$处分别设有一道屏障,小机器人达到屏障后立刻掉头反向移动,如果有两个小机器人移动后在同一个单位,那么它们就会相撞爆炸,在移动的过程中相遇并不会爆炸,问你每个小机器人爆炸的时间,如果不会相撞爆炸,输出$
阅读全文
摘要:题意:有$n$个龙珠在坐标轴上,你每次可以询问一个坐标,返回给你距离你坐标最近的龙珠的距离的平方,当这个距离等于$0$时,说明找到一颗龙珠. 题解:这题主要有两个点: 1.首先询问$(0,0)$,可以确定一颗龙珠的距离 2.对于这个距离,我们枚举$x$的可能坐标,然后因为距离固定,可以得到$y$的坐
阅读全文

浙公网安备 33010602011771号