摘要: AGC013D 最大的问题是初始状态你不知道,怎么样数两两不平移的折线? 考虑只数 刚好碰到 过边界的折线,就做完了。 这提示我们找一个代表元。 不定方程解计数 先钦定 \(f_{i}\) 表示至少有 \(i\) 个盒子放了 \(k\) 个球,然后找 \(i+1\) 个盒子先放 \(k+1\) 个球 阅读全文
posted @ 2024-01-31 16:29 ChiFAN鸭 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 前言 博主因为是蒟蒻,所以很多时候想不出线段树标记下传,所以就写分块暴力下传。为了造福人类,就准备分享一下写分块的经验。 温馨提示 本文不赘述基本写法,只讲述思路。 基础分块 例题 1 题目传送门 先化简题目意思: 维护一个序列,维护区间加和区间大于 \(x\) 的数的数量。 首先分块后问题拆成了块 阅读全文
posted @ 2024-01-31 00:01 ChiFAN鸭 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 赛时没仔细想,赛后才发现并不难。 将 \(l,r\) 与 \(l',r'\) 是否相交分开讨论。 假若不相交,那么 \(l',r' < l\) 或者 \(l',r' > r\) 并且 \([l',r']\) 内的字符一定与字符串 \(t\) 匹配上了,考虑做一遍字符串匹配再利用乘法原理计算 \(l, 阅读全文
posted @ 2024-01-31 00:00 ChiFAN鸭 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 既然字符串的总长一定,不妨对于每个询问中的 \(s_k\) 的长度根号分治,假定分治阈值为 \(B\)。下面令 \(L\) 为所有串长度总和。 对于长度大于 \(B\) 的字符串,这样的不同字符串至多有 \(\frac{L}{B}\) 个,考虑对于每个字符串建立 AC 自动机,然后暴力匹配出其他字符 阅读全文
posted @ 2024-01-31 00:00 ChiFAN鸭 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 显然,题面明摆着让你写一个可持久化 AC 自动机。 但是从空间来说这是不可能的。 想起做 不强制在线 的可持久化数据结构的一种方法,建立“时光树”,具体来说,假若版本 \(x\) 由版本 \(y\) 更改而来,建边 \(x \to y\)。最后在建出的树上遍历并回答询问。 到此我们只需要一个可以支持 阅读全文
posted @ 2024-01-31 00:00 ChiFAN鸭 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 考场上数组开大了直接 MLE 了,气。 考虑把 A,B 两种服务分开算,一个边双连通分量内的点如过有一个有服务,那么整个联通分量就都有服务。 然后按边双联通分量缩点后原图变成树,一条边是关键路线当且仅当所有服务都在它的子树内或者子树外,做一遍子树和。 具体来说,令 \(sz_i\) 表示子树 \(i 阅读全文
posted @ 2024-01-31 00:00 ChiFAN鸭 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 简要题意是找到一条边连接使得最大团大小增加。 在补图上最大团等于最大独立集。 所以问题转化为删掉一条边使得最大独立集增加,又因为团不超过两个,所以原图是二分图,也就是使得最大匹配减少。 考虑什么样的匹配边是可以被代替的,先跑一遍网络流求最大匹配,不难发现假若一条匹配在残量网络流上的一个环中,那么它就 阅读全文
posted @ 2024-01-31 00:00 ChiFAN鸭 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 翻译 有长度为 \(n\) 的序列 \(a\) 和 \(L\),你需要对于每个 \(x \in[1,n]\) 求出若把第 \(x\) 个数到第 \(n\) 个数依次装入容量为 \(L\) 的箱子中(每个数的体积为它的值,若箱子装不下了,则会使用另一个空箱子)会使用多少个箱子以及最后一个箱子的质量。 阅读全文
posted @ 2024-01-31 00:00 ChiFAN鸭 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 考虑每个木板在水平放置后对每个位置上产生的贡献。 稍微手玩几组样例: 不难发现一个高度为 \(h\) 的木板在水平放置后会是位置 \([1,h]\) 上高度增加 \(1\)。 但是高度最大是 \(10^9\) 这该怎么办? 根据上面的结论,只有当最高的木板高度与 \(n\) 一致时才有可能相同,因此 阅读全文
posted @ 2024-01-31 00:00 ChiFAN鸭 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 考虑分块。 如果你做过未来日记就会知道一个很明显的做法——值域并查集。 先考虑整块: 块内没有 \(x\) 则跳过本次操作。 块内有 \(x\) 没有 \(y\) 则令 \(fa[x] = y\) 块内存在 \(x\) 也存在 \(y\) 则暴力修改,注意到每次这种修改都会让块内元素种类减少 \(1 阅读全文
posted @ 2024-01-31 00:00 ChiFAN鸭 阅读(7) 评论(0) 推荐(0) 编辑
摘要: Day1 7.9 今天讲了一些数据结构,知识点什么都会,就是维护方法挺震撼的,为了联系 FHQ treap 就没写一棵线段树,全写的平衡树(? 顺便学了圆方树,感觉维护无向图上路径统计很方便? Day2 7.10 今天听了朱教授的数论,感觉只能听懂 \(60\%\) 怎么办?下午写一些数论题目,学习 阅读全文
posted @ 2024-01-31 00:00 ChiFAN鸭 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 申明:由于本人卡常技艺不佳,本题解复杂度正确但无法通过 首先分块,然后考虑分开计算贡献维护,看下面一张图: 我们将贡献拆分为 \(ans(A) + ans(B) + ans(C) + ans(AB) + ans(AC) + ans(BC)\),然后考虑逐一维护。 首先散块内部先离散化,然后用树状数组 阅读全文
posted @ 2024-01-31 00:00 ChiFAN鸭 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 首先考虑怎么暴力。 考虑把每个数进行 \(B\) 进制分解,然后我们惊奇的发现这两个操作就是把最低位去掉和往最低位后面插入一个数。 然后我们顺藤摸瓜,把每个数的分解扔到 Trie 树上,我们发现我们要找到一个节点,使得所有单词节点到其的距离之和最短,答案就是这个最短距离。 这里直接考虑一个 Trie 阅读全文
posted @ 2024-01-31 00:00 ChiFAN鸭 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 来一份线性时间的题解。 考虑先解决前缀限制,显然可以直接把字符串和询问全部搬到 Trie 树上,问题就变成了查询一个子树内满足后缀限制的字符串数量。 接着考虑 Trie 树合并,具体地,把后缀限制以及字符串挂在单词节点上,接着遍历整个 Trie 每到一个节点就把这个节点的儿子的所有 Trie 树合并 阅读全文
posted @ 2024-01-31 00:00 ChiFAN鸭 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 考虑把每个点进行拆成 \(d\) 个点表示星期几走到这个点,那么原图上的边 \((u,v)\) 就被拆成\((pos_{u,i},pos_{v,i+1})\) 表示星期的变化。 然后考虑进行缩点,在一个强连通分量内的同一个博物馆只能被计算一次? 那要是一个博物馆出现在两个强连通分量内呢? 可以证明这 阅读全文
posted @ 2024-01-31 00:00 ChiFAN鸭 阅读(5) 评论(0) 推荐(0) 编辑