10 2019 档案

摘要:第一次写AC自动机 简单版的这道题可以在进行匹配的时候剪一下枝,应为之前比配过了,不用在匹配了。 include include include include include using namespace std; const int MAXN=1e6+10; queue que; struct 阅读全文
posted @ 2019-10-31 15:55 BakaCirno 阅读(97) 评论(0) 推荐(0)
摘要:"传送门" 题目大意 给 $n$ 块白木板, 高度为 $a_i$, $k$ 块红木板, 高度为 $b_i$, 问在周长为 $q_i$ 的情况下, 有多少种取法使得任取任意数量的白木板和一块红木板组成两个严格递增数列, 要求红木板的高度为最大. 思路 其实从组合的方向上去看还算简单 先统计每个不同高度 阅读全文
posted @ 2019-10-30 15:41 BakaCirno 阅读(285) 评论(0) 推荐(0)
摘要:其实和 $FFT$ 就是一个模子里刻出来的一样, $FFT$ 的优化是基于它的单位根 而 $NTT$ 的模数通常有一个原根, 和 $FFT$ 的单位根有类似的性质 还是存个模板 "模板题" include include include include define MAXN 3000010 usi 阅读全文
posted @ 2019-10-30 13:03 BakaCirno 阅读(371) 评论(0) 推荐(1)
摘要:模板题 看了很久, 还是不太懂 $fft$ 的原理orz, 但是也还好, 反正再难也是一个分治而已, 不用怕 存个板子, 以后肯定也还会用的到. 希望下次来的时候我已经懂了233 阅读全文
posted @ 2019-10-30 01:22 BakaCirno 阅读(163) 评论(0) 推荐(0)
摘要:传送门 很巧妙的贪心. 我想用最少的钱让所有人都给我投票. 思路: 对于所有$m$值为$i$的人, 都必须满足已选人数$>i$才行. 如果$i+1$的人满足了, 那么$i$的人也会被满足, 那么我们可以从$n$到$0$来贪心. 我们可以先将所有$m$值为$i$的人放到一个"隔离区", 假设隔离区里的 阅读全文
posted @ 2019-10-29 20:25 BakaCirno 阅读(348) 评论(0) 推荐(0)
摘要:新学了无旋 treap,感觉特别好用,贴个模板在这里,之后再来补一下理解和注释。 模板题 当然也可以用 FhqTreap 解决区间问题, 也就是说可以完成线段数的任务, 虽然会比线段树慢一点, 但也可以做线段树做不到的区间插入 例子 阅读全文
posted @ 2019-10-29 02:08 BakaCirno 阅读(171) 评论(0) 推荐(0)
摘要:模板题 我们知道当 p 为素数且 p>n 时 C(n,m) 的求法,直接求 n!,m! 的逆元, (n-m)! 的逆元,三者相乘取模就是答案。 那么如果 p<=n 时,这个方法就不行了 这时要用到 lucas 定理: lucas(n,m)就是C(n,m): lucas(n,m)=lucas(n/p, 阅读全文
posted @ 2019-10-28 14:37 BakaCirno 阅读(168) 评论(0) 推荐(0)
摘要:传送门 首先这个题面弯弯绕绕就读不懂 瞟了一眼题解,就是求一个区间里面的众数的出现次数。 因为这个区间不更改,可离线,那就上莫队就行了 莫队求众数,记 x 出现次数 cnt[x],记出现次数为 n 的数的个数为 num[n],当前众数的次数为 now 添加的话,直接修改 cnt 和 num,用 cn 阅读全文
posted @ 2019-10-26 03:00 BakaCirno 阅读(123) 评论(0) 推荐(0)
摘要:传送门 当复习了一下树链剖分,WA了一片,调了半天,发现是把修改操作写错了。反正以后记住这里和倍增求lca类似,都是依靠点的深度来决定哪个点往上跳。 也学习了一下树上差分的方法来做这道题,当然要比树链剖分简单不少,以后记住树上差分的核心操作就是 f[u]++, f[v]++, f[lca(u,v)] 阅读全文
posted @ 2019-10-25 17:22 BakaCirno 阅读(141) 评论(0) 推荐(0)
摘要:传送门 水的一批的树型dp,看题没看清以为是用最少关键点覆盖所有点,结果是点覆盖所有边 那就是个很简单的问题了(虽然点覆盖点也不难,但我还是写了好久,WA了) 设 fi,0 是 i 点不设防,fi,1 是 i 点设防情况下以 i 为根的子树的最小贡献。 因为如果一个点不设防,那么它的所有儿子必须设防 阅读全文
posted @ 2019-10-24 21:26 BakaCirno 阅读(114) 评论(0) 推荐(0)
摘要:传送门 我的第一道莫队题。 以后新学一个算法做的第一题尽量都写一个博客。 其实非常简单,没有什么好讲的。 反正莫队的核心就是分块排序,然后移动选定区间指针,添加或删除元素嘛。 当然因为这是一道莫队门槛题,所以比较简单。 阅读全文
posted @ 2019-10-24 19:54 BakaCirno 阅读(137) 评论(0) 推荐(0)
摘要:传送门 还是那句话,二分图最大匹配的题难点在你能否可以看出这个题是二分图匹配和如何建图上。 这道题就很难看出是个二分图最大匹配问题。 仔细考虑一下,可以交换任意的两行,也可以交换任意的两列。 对于任意两个黑方块,如果它们本来在同一行,那么不管怎么交换,它们都会在同一行(列同理)。 而我们一行上只需要 阅读全文
posted @ 2019-10-24 18:44 BakaCirno 阅读(148) 评论(0) 推荐(0)
摘要:A. Yet Another Dividing into Teams 传送门 签到,有相邻的数字 ans=2,否则 ans=1 int main(){ scanf("%d",&T); while(T--){ scanf("%d",&n); memset(vis,0,sizeof(vis)); for 阅读全文
posted @ 2019-10-23 11:40 BakaCirno 阅读(575) 评论(3) 推荐(2)
摘要:传送门 一般网络流的题都难在建图,这个体可以说是网络流比较典型的建图问题了。等以后我刷够了足够的题后也许会归纳一下网络流建图里遇到的一些经典模型。 读完题后总结一下条件 1.不会和同一个人跳舞 2.和喜欢的人跳舞的次数不受限制 3.和不喜欢的人跳舞的次数不能超过 k 根据这些条件我们来构图, 对于一 阅读全文
posted @ 2019-10-22 13:16 BakaCirno 阅读(145) 评论(0) 推荐(0)
摘要:传送门 深夜题解 这道题的正解应该是用动态树,但像我这种菜鸡肯定没有学过啊 考虑用分块来莽一下,因为这道题分块的复杂度为 O(m√n) 是完全可以接受的 首先分块常规操作,将整个数列等分为 √n 块,记录每块的左右区间,和每个位置属于哪一块。 然后对于每一个位置 i,求出 to[i]:i 位置通过不 阅读全文
posted @ 2019-10-22 02:11 BakaCirno 阅读(144) 评论(0) 推荐(0)
摘要:传送门 还是那个问题,二分图最大匹配的题不可能出裸题,一定会考察你建图的能力。 比如这道题,要达到“每个装备选择一个属性”这一目的,假设 x 有 a、b 两种属性,我们可以从 a、b 向 x 连一条有向边。 然后我们依次从 1 到 10001 判断能否完成匹配,假设如果 y 不能完成,那么从 1 到 阅读全文
posted @ 2019-10-19 01:35 BakaCirno 阅读(124) 评论(0) 推荐(0)
摘要:传送门 简单来说,问题就是没回家的学生和外校学生能否和床匹配。这就是一个二分图匹配。 先看如何构建二分图。 如果 x 是学生,那么他可以与他的床匹配 如果 x 认识 y,并且 y 是学生,那么 x 可以与 y 的床匹配。 然后对每一个没有回家和外校的学生进行二分图匹配就行了,如果一个学生没有匹配上, 阅读全文
posted @ 2019-10-19 00:05 BakaCirno 阅读(116) 评论(0) 推荐(0)
摘要:传送门 给一个n个节点的树,边带权值,要求保留q条连通根节点1的边,求这q条边最大总权值是多少。 算是一个树形背包的模板题,可以将边权转化为子节点的点权来考虑分组背包,注意本题中如果要选子节点,其父节点也必须被选。 ps.没注意分组背包的写法wa了一发, 第一次for为枚举子树 第二次for为枚举当 阅读全文
posted @ 2019-10-18 10:04 BakaCirno 阅读(149) 评论(0) 推荐(0)