摘要:
昨天想了好久……现在想想是水题啊。 首先对于一个区间,如果一个数出现的次数超过了$k$次, 那么直接选$k$个这个数就好了。然后我们算一算每一个数对答案的贡献,对于第$i$个下标的数$a_i$,它只会对它之前出现不超过$k$次的区间产生贡献,那么弄一个队列记录一下每一个数的出现次数就好了。 扫过去的 阅读全文
摘要:
在这一篇里把所有的套路写全方便自己之后复习。 首先是一个小学生数学:$a$整除$b$ $ = $ $\frac{b}{a}$ 也就是说这题中格子$(i, j)$的值就是既能被$i$整除又能被$j$整除的所有自然数的和。 小学数学没学好…… 那么思考一下就能列出本题的式子: $\sum_{i = 1} 阅读全文
摘要:
披着数论题外衣的数位dp。 相当于数一数$[1,n]$范围内$1$的个数是$1,2,3,4,...log(n)$的数各有多少个,直接在二进制下数位dp。 然而我比较sb地把(1e7 + 7)当成了质数,其实数出来的数是要模$\phi(p)$的,然而数出来的数绝对不会超过$n$。 时间复杂度$O(lo 阅读全文
摘要:
斜率优化dp。 首先发现如果存在$x$和$y$使得$len(x) \geq len(y)$并且$wid(x) \geq wid(y)$,那么$y$直接不考虑就好了,因为在买$x$的时候就把$y$顺便带上了。 随便按照$x$或者$y$排一波序就能很方便地处理了。 接下来就可以设计dp了,设去重之后有$ 阅读全文
摘要:
感觉这题挺好的。 首先对于中位数最大有一个很经典的处理方法就是二分,每次二分一个数组中的下标$mid$,然后我们把$mid$代回到原来的数组中检查,如果一个数$a_{i} \geq mid$,那么就把$s_{i}$记为$1$,否则把$s_{i}$记为$-1$,然后对$s_{i}$跑一遍前缀和,观察是 阅读全文
摘要:
挺好想的数位dp,直接上板。 然而要注意的一点就是我们在这一题中需要记录下前两位的值。记忆化的数组中记录的值必须要是两位以上的数,所以在记忆化的时候要再加上一句$pre2 != -1$,要不然状态记录下的值其实多数了一些,就会错。 时间复杂度$O(n * 10 * 10 * 2)$。 Code: # 阅读全文
摘要:
一句话题意:写一个支持区间修改,区间求和的可持久化数据结构。 考虑使用主席树,然而,区间修改怎么办? 似乎有标记永久化的方法。 对于线段树上完全覆盖标记产生贡献的区间,我们直接打上一个$tag$,而对于不完全产生贡献但是会产生贡献的区间,我们直接把贡献累加到$sum$里面去。 查询的时候从上往下走一 阅读全文
摘要:
Luogu的spj现在挂了,要去其他OJ提交。 2-SAT 发现如果不考虑$x$的情况,这就成为一个2-SAT的裸题了,我们有$O(n + m)$的方法可以解决它。 那加上$x$的情况怎么弄……岂不是变成一个3-SAT。 滑稽吧,3-SAT已经被证明是一个完全NPC问题了…… 再观察一下数据范围发现 阅读全文
摘要:
双倍经验 写这两题之前被大佬剧透了呜呜呜。 分层图+最短路。 因为有$k$次机会能够把路径的费用变为$0$,我们可以建$k + 1$层图,对于每一层图我们把原来的边权和双向边连到上面去,而对于层与层之间的连接,对于每一条边,我们连上从下层到上层的有向边,边权为$0$。 这样子其实保证了它并不会向下走 阅读全文
摘要:
组合数学 + 容斥 首先考虑一下不经过障碍物的情况,从$(1, 1)$到$(n, m)$相当于在$n +m - 2$步中选出$m - 1$步往下走,方案数$\binom{n + m - 2}{m - 1}$。 再考虑一下只有一个障碍物的情况,假设这个障碍物$(x, y)$,那么总的方案数是$\bin 阅读全文