摘要: 作用 求部分积性函数前缀和,将一个不太好求的前缀和转化为两个比较好求的前缀和。 式子 \[ S(n)=\sum_{i=1}^n f(i) \] \[ g(1)S(n)=\sum_{i=1}^ng(i)S(\lfloor\frac ni\rfloor)-\sum_{i=2}^ng(i)S(\lfloo 阅读全文
posted @ 2021-06-25 12:00 oisdoaiu 阅读(43) 评论(0) 推荐(0) 编辑
摘要: tag:数论,杜教筛 题意 \(\sum_{i=1}\sum_{d|i}\mu(i)(\sigma_0(\frac id))^2\) \(n\leq 10^9,\ T=10\) 总而言之就是,不停寻找等价问题,交换求和顺序 阅读全文
posted @ 2021-06-25 09:45 oisdoaiu 阅读(28) 评论(0) 推荐(0) 编辑
摘要: tag:矩阵,特征值,计算几何 题目 设直线为 \(\lambda\vec v,\ |\vec v|=1\),则点 \(x_i\) 在直线上的投影为 \(\vec{x_i}\cdot\vec v\),所以要求的即为 \[ \sum |x_i|^2-(\vec{x_i}\cdot\vec v) \] 阅读全文
posted @ 2021-06-25 09:44 oisdoaiu 阅读(32) 评论(0) 推荐(0) 编辑
摘要: tag:组合计数,dp 规定一个顺序,先放完横着的,再对于每一种横着的情况去放斜着的。那么会导致重复的放置方案只有: 对于一个长度为 \(k\) 的斜操作,被连续 \(k\) 个横操作覆盖了。那么放与不放都会被计算。 存在连续 \(m\) 个斜操作。那么对应的第一行有无横操作都会被计算一次。 所以规 阅读全文
posted @ 2021-06-25 09:39 oisdoaiu 阅读(25) 评论(0) 推荐(0) 编辑
摘要: tag:插值,扫描线 设 \(f_i\) 为 \(i\) 时刻的答案。 对于单个点来说,对 \(f_i\) 的贡献为一个二次函数。 对于两个点来说,要减去重复部分,而重复部分对 \(f_i\) 的贡献也是一个二次函数。 同理,容斥以后每部分贡献都是一个二次函数,所以 \(f_i\) 实际上就是一个分 阅读全文
posted @ 2021-06-25 09:38 oisdoaiu 阅读(58) 评论(0) 推荐(0) 编辑
摘要: tag:dp,线段树,单调栈 设 \(f_i\) 为前 \(i\) 个元素的最小花费,则转移方程为: \[ f_i = \min_{[i,j]\text{可以放同一个数字}}f_{j-1}+1 \] 而 \([i,j]\) 可以放同一个数字就相当于是 \(\max l_i\le\min r_i\)。 阅读全文
posted @ 2021-06-25 09:35 oisdoaiu 阅读(27) 评论(0) 推荐(0) 编辑
摘要: tag:背包dp,数论 首先可以把给定的排列分成若干循环,将长度相同的分为一组,则可以分别处理每组然后乘起来。 对于一组数量为 \(cnt_a\) 长度为 \(a\) 的循环,再分成若干组,假设其中一组有 \(b\) 个,则必须满足 \(\gcd(ab,k)=b\)。而这样一组的贡献为 \((b-1 阅读全文
posted @ 2021-06-25 09:33 oisdoaiu 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 多项式乘法逆 设 \(F*G\equiv1\ (mod\ x^n)\) 递归处理 设 \(H*F\equiv1\ (mod\ x^k)\),考虑推出 \(H'*F\equiv1\ (mod\ x^{2k})\) \[ H*F\equiv1\ (mod\ x^k) \] \[ H^2F^2-2HF+1 阅读全文
posted @ 2021-06-25 09:31 oisdoaiu 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 摸鱼 口胡题目 Day-6 ~ Day-2 天天模拟赛,烤糊了,天天被吊打。四天的模拟赛一共做出来3道题/kk Day 1 上午 听说卡老师来了/jy 面基了外校同学并且混入其中(( 话说本来调整好的学习状态在上午,结果考试在下午。。 早上试机3道模拟题(确信),顺便看了看list的用法。 本来想去 阅读全文
posted @ 2021-06-25 09:30 oisdoaiu 阅读(114) 评论(0) 推荐(0) 编辑
摘要: tag:组合计数,线段树 第一反应是枚举俩位置计算贡献,然后推推式子优化。 首先先考虑一共有多少种合法的排列,把 \(a_i\) 排序后(设为 \(\{b\}\)) \[ ans=\prod_{i=1}^nb_i-i+1 \] 枚举两个位置 \(i,\ j(i<j)\),第一反应是令 \(a_i,a 阅读全文
posted @ 2021-06-25 09:27 oisdoaiu 阅读(63) 评论(0) 推荐(0) 编辑
摘要: tag:组合计数 果然连计数也不会了呢。。 题意转化为每次往序列里插入一个数,且只能放在小于这个数的数前面,或者结尾。 比如 \([3,3,2,3,2]\),插入一个 \(3\),则只有 \(3\) 种方式。 然而还是不太好计数。。 考虑继续转化,把操作序列抽象成一个树,将 \(x\) 插入在 \( 阅读全文
posted @ 2021-06-25 09:26 oisdoaiu 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 线上降智 好像线上考试总是降智,可能是家里状态不好吧。。 t1看着就像一个大毒瘤,t2感觉很可做,但是一股神秘的力量驱使我去肝t3,导致最后只有半个小时想t2,而且t3推了半天也只有12。。 总之这几天状态都不太好,就当时给noi攒rp了,好好调整一下。。 阅读全文
posted @ 2021-06-25 09:22 oisdoaiu 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 设 \(p\) 原根为 \(g\),则 \(g^{\phi(p)}\equiv1(mod\ p)\),且 \(\forall 0<i<\phi(p),\ g^i\not\equiv0(mod\ p)\)。 \(n\) 有原根,当且仅当 \(n=2,\ 4,\ p^k,\ 2p^k\),\(p\) 为 阅读全文
posted @ 2021-06-25 09:19 oisdoaiu 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 给定一个字符串,求出以每个位置为中心的最长回文子串。 流程 设 \(mxr\) 为当前所有回文串的最大的右边界,\(mid\) 为对应的中点 为了防止中点在两个位置中间,将原串的每两个字符间和开头结尾都塞一个相同的无关字符 若 \(i\leq mxr\),令 \(f_i=\min(f_{2mid-i 阅读全文
posted @ 2021-06-25 09:17 oisdoaiu 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 对于一个有向无环图,边权均属于某交换群,一条路径的权值为边权的乘积,一个路径集合的权值为所有路径权值的乘积。设点集 \(S=\{a_1\cdots a_n\},\ T=\{b_1\cdots b_n\}\)。 求出所有路径集合 \(P={p_1\cdots p_n}\) 的权值和,使得 \(p_i: 阅读全文
posted @ 2021-06-25 09:15 oisdoaiu 阅读(54) 评论(0) 推荐(0) 编辑
摘要: tag:序列自动机,状压dp 一眼看上去感觉不太好做,实际上可以枚举所有串,然后问题就变为统计一个串是多少个串的子序列。 可以构建一个子序列自动机,然后将初始状态(给出的字符串)设为 \(1\),再跑一个dp即可。 状态定义如下: \(f[len][S]\) 用一个01串表示状态 开头一个1,用来表 阅读全文
posted @ 2021-06-25 09:13 oisdoaiu 阅读(80) 评论(0) 推荐(0) 编辑
摘要: tag:线段树,贪心 根据贪心不难想到,每个物品都从大到小排序,然后一个区间的答案就是3个值的区间max乘起来。 所以要求的就是 \[ \sum_{l\le r}max_a[l,r]\cdot max_b[l,r]\cdot max_c[l,r] \] 一个常见的套路,枚举右端点,线段树维护答案,用 阅读全文
posted @ 2021-06-25 09:12 oisdoaiu 阅读(30) 评论(0) 推荐(0) 编辑
摘要: tag:可持久化线段树,扫描线,哈希 对于 \(40%\) 的暴力,不难想到直接暴力求出所有的列表,然后nth_element 考虑拓展这个做法,实际上如果用扫瞄线求出所有列表的话,变动只有 \(O(n)\) 次,于是想到可持久化数组。注意要去重,所以再加个哈希。 求答案的时候还是使用nth_ele 阅读全文
posted @ 2021-06-25 09:10 oisdoaiu 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 6.1还在考试的屑 tag:SAM,PAM 最终的回文串一定由这样的形式组成: \(s1+s2+s3\) 其中 \(s1\) 为 \(a\) 串子串,\(s3\) 为 \(b\) 串子串,且 \(s1=rev(s3)\)。 \(s2\) 为一个回文串(可以是 \(a\) 的子串也可以是 \(b\) 阅读全文
posted @ 2021-06-25 09:09 oisdoaiu 阅读(29) 评论(0) 推荐(0) 编辑
摘要: tag:分块,二分 对操作序列分块。 对于一个块,先 \(O(n)\) 处理出当前每个点的真实值。由于一个块内最多只有 \(O(B)\) 个点会发生变化,所以可以按照指针关系将 \(O(n)\) 个点缩成 \(O(B)\) 个点,之后的操作就 \(O(B^2)\) 暴力操作。 对于一个询问,首先在预 阅读全文
posted @ 2021-06-25 09:07 oisdoaiu 阅读(37) 评论(0) 推荐(0) 编辑