杂题
文章平均质量分 81
m0_74911187
这个作者很懒,什么都没留下…
展开
-
牛客小白月赛87 G(快速求出一个数组中gcd==1的的逆序对个数)
为1,求逆序对很好求,我们都知道可以用树状数组求,那么如何快速求出来一个数组中互质的个数呢?注:一个长为n的排列即为在这个数组中,1~n每个数恰好出现一次。的倍数,我们统计这些数中逆序对的个数,但是我们会发现一个问题,:给定一个长度为n的排列,想知道排列中有多少个数满足。:首先题目翻译过来就是,问一个排列中有多少个逆序对的。中,然后用树状数组求一遍逆序对的数量,例如,假设。都是计算过的,因此最后的答案就是。的倍数,任意选择两个数,他们的。的逆序对个数,我们可以倒叙枚举。的个数,这样得到的就是。原创 2024-02-16 23:55:45 · 693 阅读 · 0 评论 -
CF 1879D (位运算)
的前缀异或和为1,那么就要找到前缀中所有异或和为0的位置,并且求出它们的区间长度,我们已经知道了前缀中0的个数cnt,我们只需统计下来所有为0的位置的下标总和sum,那么需要求的区间总长度就是。因此我们要看看有没有其他的办法,因为用到了异或运算,因此我们可以考虑是否可以用位运算来做,会发现,对于一个二进制数的每一位对答案的贡献都是独立的.的二进制长度最长为30,那么我们就可以看成是30个长度为n的二进制串,问题就转换成了:给定一个01串,对于所有包含奇数个1的区间。,计算它们的总区间长度。原创 2024-02-15 15:34:57 · 558 阅读 · 0 评论 -
Codeforces Round 764 (Div. 3)E G
个字符串中所有长度为2,3的子串,这里有一个小技巧,记录长度为2,3的子串时,我们可以像哈希一样将其看成一个10进制数,然后就可以用一个数来表示一个子串,然后我们用。我们可以从高位向低位枚举,去掉该位为1的边后,图是否能连通,如果能连通,那么这一位就不在答案中,否则这一位就在答案中。任何字符串都可以用长度为2,3的子串拼起来,因此我们记录下来给定的。个字符串中,问应该如何分割,答案输出分割出来的每一段在。分割成长度大于等于2的一些子串,且这些子串在给定的。条边,求所有权值按位或的最小生成树。原创 2024-01-26 18:09:32 · 226 阅读 · 0 评论 -
Codeforces1660 F2. Promising String (hard version) (思维+树状数组+小技巧)
的数量相等,我们就称为是平衡的字符串,如果能通过以下操作使得字符串变成平衡,我们就说该字符串是有希望的,平衡的字符串一定有希望。问一个字符串有多少子串是有希望的?因为用树状数组求比一个数小的个数不能出现负数,前缀和中可能会出现负数,因此我们首先计算出前缀和的最小值。是连续出现的,如果不是连续出现的,其前缀和是不会达到3的。如果不把0加入到树状数组中去的话,那么会漏掉第一次出现3的情况。为了满足这两个不等式,我们可以用三个树状数组分别维护。:给定一个字符串,字符串只包括。的值,然后用树状数组求比。原创 2024-01-24 21:46:06 · 855 阅读 · 0 评论 -
Codeforces1689C - Infected Tree(树形DP)
给定一棵树,除根节点的度数最多为2,其他节点的度数最多为3。有一个病毒从根节点开始向下蔓延,每次病毒会向其下一层的所有子节点蔓延,同时每次我们可以选择删除一个节点,那么以该节点为根的所有子节点就被救下来不会被感染了(不包括删去的节点)。问最多能救下来多少节点。被感染,能救下来的子节点的个数。因为除根节点外的其他节点的度数最多为3,那么每个节点最多有2个子节点,对于每个节点我们每次会选取其中一个子节点删除,用。:简单的树形DP,我们可以用。的两个子节点,那么删除。为根的子节点的个数,原创 2024-01-23 17:08:39 · 985 阅读 · 0 评论 -
树的直径 AcWing 1207. 大臣的旅费
聪明的J发现,如果不在某个城市停下来修整,在连续行进过程中,他所花的路费与他已走过的距离有关,在走第x千米到第x+1千米这一千米中(x是整数),他花费的路费是x+10这么多。我们以任意一点开始,找到离这个点最远的点,然后用找到的这个点,以找到的这个点为起点再进行上述操作,得到的一条路径就是树的直径。为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。原创 2023-07-26 19:58:59 · 48 阅读 · 1 评论