摘要:
题解 容斥题 我们枚举出现次数最多的数出现了K次 然后我们需要计算的序列是所有数字出现个数都不超过K 1次 我们枚举不合法的数字的数目j,说明这个排列里除了我们固定出现K次的数至少有j个数是不合法的,先让这j个数每个数出现k次,然后再随意排列 j最大是N / K 那么复杂度就是调和级数了 代码 cp 阅读全文
摘要:
题解 可重元素的全排列都是很熟知的东西了 就是 $\frac{n!}{\prod c_{i}!}$其中$c_{i}$是第i种数出现的次数 我们对于每个元素统计一下多少排列里这个数会被统计进去 我们对于一个M,如果a里面大于M的数有k个,那么每个被统计进的元素和这些数都不相同,被统计进的元素需要出现在 阅读全文
摘要:
题解 想出了一个神奇的技巧 我们先把串反过来(因为我们需要起始位置的值而不是终止位置的值),每个点维护一下 fail树上子树里的点,作为正数绝对值最大的两个数,作为负数绝对值最大的两个数 我们发现这个两两相乘的最大值肯定是一个后缀最大值,我们对每个节点求一个最大值存到这个节点的len处理出后缀最大值 阅读全文
摘要:
题解 k叉哈夫曼树,但是没有了二叉那样的最后一定能合并成一个树根的优秀性质,我们就不断模拟操作看看到了哪一步能用的节点数 // define ivorysi define enter putchar('\n') define space putchar(' ') define fi first de 阅读全文
摘要:
题解 怎么NOI2015D1……全是一眼秒的sb题……然后我代码全都写跪一遍= = 要是NOI2015是IOI赛制我就可以AK啦(大雾) 代码能力直线下降,NOI2018滚粗预定了啊TAT 我是不是要去开码农题啊QAQ 我们发现大于$\sqrt{N}$的素数只会在每个数里出现至多1个,而小于$\sq 阅读全文
摘要:
题解 连树剖我都写跪一次,我现在怎么那么老年啊= = 简直滚粗预定了啊。。 我们线段树维护树剖只需要资瓷区间覆盖和区间求和就好了 安装的时候看看自己到根有多少包装了,dep减去这个数量就好 卸载的时候看看子树里有多少包安装了就行 代码 cpp include // define ivorysi de 阅读全文
摘要:
题解 开始是想两个并查集的 和A相等,和A不相等 如果AB相等就连 A 相等,B相等 B不相等 A不相等 如果AB不相等就连 A不相等,B相等 B相等,A不相等 但是显然不对,因为和A不相等的不一定和B相等 所以我就gg了,后来发现只要把所有相等的先连上然后看看不相等的有没有在同一集合就行 老年选手 阅读全文