摘要:
花了2d打磨出来的题目,觉得很有意思。 先讲点无关的,这道题有两版,但都是对要求的量进行改动。 1.第一次要求的是y属性为a与y属性为b的两个节点的路径权值之和,对于要求的这个量,我们设v[i]为i到根节点的权值之和。那么我们先对a,b进行质因数分解,设dcg为a,b分解质因数后最长公共前缀的乘积, 阅读全文
摘要:
这题其实挺简单的...... 首先我们手模样例,对于第一组样例其实就是在1-n之间取一个数,求取到的数的期望。所以E(x)=\(\frac{1 + n}{2}\)。 对于第二组样例,我们首先将所有可能情况枚举出来: 10 10 10 10 10 10 10 10 10 10 9 9 9 9 9 9 阅读全文
摘要:
难度:2 看到位运算想到拆位。因为是与所以对于 \([l,r]\) 区间内在二进制下,如果它是 1 则 \([l,r]\) 区间都是 1,如果是 0 则 \([l,r]\) 区间内至少有 1 个 0。因为是区间所以不难想到用线段树处理,而线段树维护的就是区间内1的个数。 考虑如何处理。首先对于q拆位 阅读全文
摘要:
难度2 还是比较巧妙的。 看到这种操作题,思路基本就是考虑用合适的数据结构去求解每一个操作。在遇到一些比较难搞的操作时可以考虑转换。对于一些删除的操作一定要小心,除非很简单,否则大概率是转换 看到操作一,因为这个数据范围想到只用存一个x就可以了 看到操作二,是删除,等等 看到操作三,考虑二分再加加减 阅读全文
摘要:
难度2 比较有意思的dp题 首先发现这就是将一个环从中间一点一点剥开的过程。其次观察到joi取时右端点减左端点为偶数,ioi取时为奇数,所以一次一次dp即可。 看到这种题时,发现有环,就要想到双倍延长再模拟一下题意,手玩一下即可 // LUOGU_RID: 117752061 #include<bi 阅读全文
摘要:
难度1 这题看到一点思路也没有,但是看到最小操作数想到二分,dp和贪心,二分答案的check显然不会,贪心不会。发现对于一行,前面的\(i-2\)是不会影响的,这一行也不会影响后面的\(i+2\)行,所以是dp。考虑如何设计状态因为\(i-1\)和\(i+1\)行都会影响,所以设计出来一个dp[i] 阅读全文
摘要:
难度 1+ 想了还是挺久的。首先对于这种区间的问题,比较常见的套路就是枚举右端点\(l_{i}\)通过数据结构算出贡献。em,因为是有关二进制的问题,考虑拆位,如果\(a_{i}\)或上前面的要变成新的数,那么必有一位0变成了1,所以想到开21颗平衡树找下前驱后继就可以了。 上面足以通过,但我们发现 阅读全文
摘要:
难度1 em还是一道比较套路的题目。观察发现,如果当\(r_{i}=1\)时他的两把钥匙状态是相同的,当\(r_{i}=0\)时他的两把钥匙状态是不同的,对于这种相同不同的问题可以考虑并差集,状态一样就一样的并在一起,否则就把不一样的并在一起 所以以后看见这些问题(a=b+k,a=!b,a=b)都可 阅读全文
摘要:
难度2 比较好的题目,加强了对主席树的理解。 就我个人而言,我目前可以用三种方法切掉此题。 1.平衡树 对于每个颜色建平衡树,维护颜色对应的下标,询问时直接split输出size即可 2.stl(vector) insert,erase,lower_bound,upper_bound,一顿搞实现上面 阅读全文
摘要:
难度2 eeeeeeeee比较有意思的一道题目。一开始看到删除,有一个很经典的trick,就是将删除变成插入,倒序处理。然后发现不会做了。然后巨佬lyc说可以用cdq分治,将时间变为第三个关键字,这样也就不用倒序处理了。考虑求出删除某个数后对逆序对个数产生的贡献,在加入了时间戳之后i,j为逆序对的条 阅读全文
摘要:
难度3 比较有意思的一道题。首先看到题目是求树上最小路径覆盖,自然想到由叶子入手去分析,所以当子树内有偶数个叶子节点时,那么就有两个叶子向上匹配,否则只有一个叶子向上匹配。这个东西可以用树剖维护,线段树维护的是子树内有多少个偶的,相当于一个区间反转一类的东西。 细节不算多,但也坑了我0.5h,以后在 阅读全文
摘要:
难度2 也是比较有意思的一道题。首先发现每个小团体独立,所以对于每个小团体分开直接暴力dp,dp[i][j]表示当前小团体做到第i人,走了j人,然后O(n)转移,加上部分分喜提50pts。为什么要O(n)转移呢,因为我要枚举匹配的两个人然后算贡献。但是对于这种带绝对值的贡献,我们一般都要把绝对值拆掉 阅读全文
摘要:
难度1 一个比较经典的trick是,看到要求的比较难求,不妨枚举要求的,然后验证条件。 所以问题转化成了,枚举中位数,在前面找\(\frac{n-1}{2}\)个数,在后面找\(\frac{n-1}{2}\)个数,然后这些人的奖学金金额不超过f。然后有一个很简单的贪心,就是一个类似前缀最小和,后缀最 阅读全文
摘要:
知道要用并查集才会做的,真是菜到家了。手模发现如果将这些约束条件变成图的边的话,那么在一个连通块中,这些节点可以共用一个父亲。然后构造出来的大概就是这种东西 所以我们可以选出大小大于2的一个集合,然后从其他点挑出一个作为父亲,然后另外点连在这个集合的一个点上就可以了。 阅读全文
摘要:
最常用的是并查集,但是我最近学了线段树合并,以后还要学树上启发式合并。 当看到题目里有一些合并操作时,可以想到上面的东西。然后当看到多个约束条件时我们也要想到这些东西。首先对于并查集,我会普通并查集,扩展域并查集,带权并查集。带权并查集每个集合内的元素通常有一定联系,但是线段树合并就是一个集合内的元 阅读全文
摘要:
考场上没写出来....... 考场上想的是对于每条边钦定一条最短路,边权全赋成1,然后就不会了。 下一部是钦定其他边边权为k,如果经过边权为k的边是最短路,那么把这条设为1就是更短的路。(点到点,一条最短路到另外一条最短路)。所以正确。无解当且仅当k==1并且有重复最短路。 以后看到最短路,如果边权 阅读全文
摘要:
通常一个子树的信息可以由儿子合并而来。题目要求输出每个子树的答案。时间1e5 阅读全文
摘要:
无向无根树,首先想到黑白间隔染色。首先看到相等,我们就能想到各种-1和1相抵消。然后考虑选1作为根节点,钦定子树权值为-1,然后靠着这个性质推就可以了。关于树的构造题要往度数,深度方面想 阅读全文
摘要:
在遇到一些题目在设状态时,前面的状态对后面的有影响,比如在P1240和P1350中前面的放置会对后面的有影响,正常的状态是不行的。以前可能考虑状态压缩,但现在我们可以通过发现前面状态的一些共性,比如在P1240+P1350中前面放了k个車那么一定有k行被占用,所以就不用记录之前那些行被占用了。在一些 阅读全文
摘要:
最近学了一点黑科技,这就是一个。有一个结论 比如这就是一个dfn序。在代码中,常常对beg和ed都开一个数组。如果一个点是x,y的lca记为g,那么有以下结论\(beg[g]<min(beg[x],beg[y]),ed[g]>max(ed[x],ed[y])\) 感性理解即可。所以我们就可以在符合的 阅读全文