摘要: 嘟嘟嘟 做这道题得自己推出这么几个结论…… 1.最大的反素数一定是约数个数最多的的数中最小的那个。 这个其实很好想:根据定义,$g(x)$要大于任意的$g(i)$,而不是大于等于。 2.1~n中任意一个数的不同的质因子不会超过10个,且所有质因子的指数之和不会大于30. 最小的10个质数的乘积刚好大 阅读全文
posted @ 2018-10-08 20:31 mrclr 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 这题竟然暴力就过了…… 在[1, sqrt(b1)]中枚举x,判断x | b1,如果成立,再判断lcm(x, b0) == b1 && gcd(x, a0) == a1,并计数。 复杂度O(n * sqrt(b1) * logb1)。 1 #include<cstdio> 2 #includ 阅读全文
posted @ 2018-10-08 18:00 mrclr 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 偶然看到的这道题,觉得有点意思,就做了。 首先题里说修改后的数列只能出现修改前的数,那么状态之间的转移也就之可能在这些数之间。 令f[i][j]表示第 i 个数改成原序列第 j 小的数时的最小步数。容易得出:f[i][j] = min(f[i - 1][k]) + abs(a[i] - b[ 阅读全文
posted @ 2018-10-08 16:39 mrclr 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 【欧拉函数】 大致题意:如果知道f(a, b),就可以求出f(a * k, b * k)。现给出一个n,求至少需要知道几个二元组(a, b),使所有的f(x, y)都能求出来。(1 <= x, y <= n) 首先能确定的是gcd(a, b) = 1。不妨假设b >= a,那么如果b一定,至 阅读全文
posted @ 2018-10-08 15:30 mrclr 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 树剖板子题。 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstring> 6 #include<cstdlib> 7 #include<cctype> 阅读全文
posted @ 2018-10-08 14:37 mrclr 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 枚举a, 求出b,然后代入看a和b是否是对的。 具体方法:通过x1和x3可以求出b : x2 = (a * x1 + b) % mod (1) x3 = (a * x2 + b) % mod (2) 把(2)代入(1)得 x3 = (a2 * x1 + a * b + b) % mod 整理 阅读全文
posted @ 2018-10-08 11:53 mrclr 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 令dp[i]表示在n个人中,有 i 个人获得第一名的方案数,转移方程为dp[i] = C(i, n) * dp[n - i]。C(i, n)就是从n个人中选 i 个第一,那么剩下的n - i 个人必须都不是第一,所以就从dp[n - i]转移过来。 因为模数不是质数,所以O(n2)杨辉三角递 阅读全文
posted @ 2018-10-08 10:49 mrclr 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 嘟嘟嘟 看到最后让求一个比值,应该得往01规划上去想。令x = ∑v[i] / ∑c[i],则x * ∑c[i] = ∑v[i], ∑(v[i] - x * c[i]) = 0. 于是可以二分x(注意是实数二分),每一个点得到新的权值v[i] - mid * c[i],然后树上背包求最大值。如果最大 阅读全文
posted @ 2018-10-08 10:07 mrclr 阅读(304) 评论(0) 推荐(0) 编辑