08 2018 档案
摘要:题意略。 思路: 这里有两个结论需要注意: 1.gcd(a ^ x - 1,a ^ y - 1) = a ^ gcd(x,y) - 1 2.gcd(fib[x],fib[y]) = fib[gcd(x,y)] 详见代码:
阅读全文
摘要:题意略。 思路: 这个题目没做出来是因为缺少一个整体的构造思路。 正确的构造思路是不断地在s中去构造并且扩大t的后缀,构造好的后缀总是放在前面,然后不断地把它往后挤,最后将s构造成t。 比如: 现在在s中构造好的t的后缀为a(在s中体现为前缀),包含在了s的前缀中,为了继续扩大这个t的后缀,我们需要
阅读全文
摘要:题意略。 思路: 图论里掺杂了一些动态规划。 有几个注意点: 1.dp时状态的设计:因为我们要寻求的是出度为0并且可以从起点走奇数步抵达的点,由于同一个点可以通过多种方式到达。 并且我们在获得奇数步点的时候,需要偶数步点作为支撑,所以visit[ i ][ j ]表示第i个点能否具备j状态(0、1)
阅读全文
摘要:题意略。 思路: 很经典的逆序对计数问题。 https://blog.csdn.net/v5zsq/article/details/79006684 这篇博客讲得很好。 当循环到n的时候,我们需要特殊考虑,因为在循环内,它的贡献为0,所以我们在出循环的时候,还要特殊地加上一个值,也即整体的逆序对个数
阅读全文
摘要:题意略。 思路: 我们可以把 bi[ i ] 在 ai[ ] 中的位置记录下来,然后算出 i - mp[ bi[i] ] ,再将它压入一个multiset。每次我们就二分地来寻找离0最近的数字来作为答案。 那当我们循环左移的时候怎么办呢?把每个数字都减一,把当前 bi[i] 产生的数字重新赋值再压入
阅读全文
摘要:题意略。 思路: 对于随机产生的一个数列,对于某个儿子,其兄弟在其前面的概率为 1 / 2。 所以这个兄弟对期望的贡献为son[v] / 2,所有兄弟加起来即为(tot - 1) / 2。 详见代码:
阅读全文
摘要:题意略。 思路: 仔细思考这个题目会发现,它其实是要你查询两次,第一是要规定l,r的范围,第二是要在范围内查询小于等于H的个数。所以有的人说要用主席树。 现在,如果我们能省去范围内对h的查询呢?也就是说,在查询范围时,我们就要保证这个范围内的所有hi都小于等于H的数字。 我们可以离线地来做。这样就只
阅读全文
摘要:题意略。 思路: 将树上的节点编好dfs序,然后就可以用树状数组区间修改点查询了。 我们用 lft[v] 和 rht[v]来表示v的子树在dfs序中的左端和右端,这样才方便我们对树状数组的操作。 其实这个题目的问题在于每个点在修改时,修改的值不是一定的,会发生变化。 我是将加上的值和减去的值分开了。
阅读全文
摘要:题意略。 思路: 我们将数组中的数字从大到小排列,分别考虑取前0 + 1,1 + 1,2 + 1.....个的情况。 所谓i + 1的意思是,取前i个的时候,同时取第[i + 1],[i + 2],......,[n]个元素。这样产生的是一个递减的和。 我们将取前 i 个的这种情况定义为第 i 类。
阅读全文
摘要:题意略。 思路:这个题目是一个阶梯博弈。其实像这种阶梯博弈,威佐夫博弈,巴什博弈,nim博弈,斐波那契博弈,都是要构造一个模型。 对于特定的模型,都有一个固定的策略。 对于这个题目,我们可以发现1,2,7,8,13,14.....是一个体系。3,6,9,12,15.....是一个体系。4,5,10,
阅读全文

浙公网安备 33010602011771号