摘要: 一道简单的数学题~ 首先分析题意。精简得出:假设跳了 \(t\) 次,那么青蛙A的坐标是 \((x+mt)\mod L\),青蛙B的坐标是 \((y+nt)\mod L\),列出方程: \[x+mt\equiv y+nt\pmod L \]由于余数具有可减性,所以把 \(y+nt\) 移到左边,得出 阅读全文
posted @ 2024-09-05 19:28 吴一鸣 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 前缀知识:枚举,费马小定理,逆元,线性乘法逆元,线段树(?)。 解法1:暴力 如题。暴力枚举即可,30分。由于太简单,不给代码。 解法2:前缀积+费马小定理+逆元 由于涉及静态区间,可以想到前缀积。前缀积公式为 \(q_r/q_{l-1}\),除法恰好可以用逆元来算。直接写即可。不会超时,因为时间为 阅读全文
posted @ 2024-09-04 18:30 吴一鸣 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 最小生成树,一般我们会想到Kruskal或Prim,但是如果要求任意子图(仅限于包含部分结点和连接这些结点的所有完整的边)的最小生成树并且查询量很大呢?假设此处结点数量小于 \(20\)。 首先可以想到状态压缩,预处理出所有子图的最小生成树,但是这样如果 \(n\) 逼近 \(20\) 就不行了。状 阅读全文
posted @ 2024-08-31 16:48 吴一鸣 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 如果我既有区间乘法又有区间加法,我应该怎么办呢? 这时候需要写两个标记。假设只写一个标记。 标记加法:此时对于乘法操作,因为是将 \(t_i+lazy_i\) 乘以 \(x\),这样子显然一个懒惰标记做不到。 标记乘法:那我加法咋办? 那两个标记怎么用呢?首先假设加法标记为 \(lazy\),乘法标 阅读全文
posted @ 2024-08-25 14:24 吴一鸣 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章我们讲了线段树的最基本的操作。如果有一种操作叫做区间加法呢?这个时候显然可以依次单点修改,但是时间复杂度太高了。所以可以考虑优化,由于思考过程可能很长,此处直接引入懒惰标记。 懒惰标记就是在对一颗树的所有节点进行某种统一操作时,只对根节点做一个标记表示它的子树都要进行这个操作,但是懒惰标记 阅读全文
posted @ 2024-08-23 20:37 吴一鸣 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 闲了好久的wym复活拉~更个辣鸡的线段树 如果你不知道什么是线段树这个就不用看 由于我们平时可能会遇到一些恶心的题叫做给你 \(10^5\) 个数的数组,然后 \(10^5\) 次修改或查询,这样显然暴力是可以做的而且ST表我们无视修改。这个时候可以用线段树、树状数组或者其他大佬们的神仙算法,由于我 阅读全文
posted @ 2024-07-29 00:37 吴一鸣 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 写在最前面的话:如果你懂这道题的线段树或者树状数组解法,那么本题解对你可能没有帮助。 题目传送门(Luogu) 题目传送门(AtCoder) [ABC354F] Useless for LIS 题面翻译 给定一个长度为 \(n\) 的序列 \(a\)。求出所有 \(i\) 使得存在任意一个 \(a\ 阅读全文
posted @ 2024-06-07 22:34 吴一鸣 阅读(23) 评论(0) 推荐(0) 编辑