- 博客(5)
- 收藏
- 关注
原创 数据结构专题
举r指针右移为例子,如果是添加的数和最后两个数为递减关系,那么不对答案产生贡献,如果不是,则对答案产生贡献+1,剩下三种情况也容易推出来。
2024-04-03 00:46:27 258 1
原创 Codeforces Round 937 (Div. 4) 题解(A-F)
首先先判断一下是否能构成二叉树,构成二叉树的条件是:后代为2的节点*2+后代为1的节点+1=总结点,即:2*a+b+1=a+b+c。所以在构造时尽可能往满二叉树方向构造,即先使用后代为2的点,然后再使用后代为1的点,最后使用后代为0的叶子结点,当叶子结点不够则结束。筛选出字符串长度的所有因子,然后枚举因子,用map存下所有的子串大小,判断不同子串的个数,如果子串个数为1,则直接成立。如果不同子串个数为2,并且其中一个子串只有一个,那么判断一下不同的两个子串不同的字符个数,若为1,则成立,反之,不成立。
2024-03-29 11:50:40 639
原创 二分算法专题
我们发现,每次修改都是从上到下的修改,我们二分答案,即二分修改次数时,可以根据上一次的修改次数进行增或减,即对把少修改的0改为1,多修改的1改为0。查询区间是否是正确的,可以遍历一遍区间数组,对区间求和,判断是否区间的和严格大于区间长度的一半。给定n个全为0的序列,m个区间l,r (l
2024-03-28 21:20:02 845
原创 动态规划专题
而对于一个节点,它的子树重新排列后的结果,对答案的贡献为:x*(siz-x-1),这里siz表示节点的树的大小,x表示比根节点小的数,那么贡献为比根节点小的数的个数*比根节点大的数的个数。给的一棵根为1的树,节点数为n,边数为n-1, 给定一个大小为n的排列,重新对n个节点赋值a1,a2....an,其中a1,a2……对于每一个节点,设节点被赋赋值为x,求节的两个子树中节点分别为yi和zi,其中(yi>x&&zi
2024-03-28 01:13:34 120
原创 贪心算法专题
反悔贪心的精髓就是,对于当前的最优解直接记录它对答案的贡献,而后续遇到更优解时只需要更新上一次最优解(因为堆自动排序了,所以更新只需要在O(1)的时间复杂度内完成)。毫无疑问,O(n²)的时间复杂度对于n
2024-03-28 00:29:44 926
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人