$noip$ 套题.
看了下题,感觉可能 $T1$ 比较麻烦,后面两个大概都是 $noip$ 难度.
于是打算把后面两个写了再做 $T1$ .( $flag$ )
$b$
这个题上次 $nicodafagood$ 讲过,当时就直接口胡出来了,做法比较套路.
对第 $4$ 个条件 $\gcd_{i=1}^k a_i=1$ 容斥一下,设 $f(i)$ 表示所有数均为 $i$ 的倍数,不考虑第 $4$ 个条件的答案.
那么原问题答案就是 $f(1)-f(2)-f(3)-f(5)+f(6)\dots$ 有奇数个质因子就减去,偶数个质因子就加上,若它的某个质因子次数 $\ge 2$ ,那么它的贡献一定在算那个质因子的 $f$ 的时候被算入,就不用算了.
所以这个系数就是 $\mu$ ,记不考虑第 $4$ 个条件, $a_i$ 取值范围为 $[1,x]$ 时答案为 $F(x)$ ,即 $f(\lfloor \frac n x \rfloor)$.
原问题答案为 $\sum_{i=1}^n F(\lfloor \frac n i\rfloor)\cdot \mu(i)$ . 显然可以整除分块, $\mu$ 的前缀和用杜教筛计算.
计算 $F(x)$ 也是经典问题,位置 $i$ 的元素加上 $i-1$ ,就变成了求单调递增序列个数,而取值范围变成 $[1,x+k-1]$ .
随便取 $k$ 个数,从小到大排序后恰好对应了一种方案.于是 $F(x)={x+k-1\choose k}$ .
$x$ 可能很大,但 $k\le 10^3$ ,所以每次求组合数的时候暴力 $O(k)$ 求,大概就能过了.
1 |
|
$c$
显然是点分治.
但点的贡献写起来比边的贡献麻烦,因为根节点的贡献只能贡献一次.所以记录时带上根节点的贡献,查询时不带.
分两种情况讨论一下,一种是最大值在当前点到根节点路径上,另一种是在根节点到另外一个点的路径上.
式子列一列,发现就相当于二维平面内有若干点,要统计 $x=x_0$ ,$y\le y_0$ 或 $y>y_0$ 的点的数目.
按 $x$ 为第一关键字, $y$ 为第二关键字排序. 这个东西还要离散化,我的做法写起来特别麻烦,细节特别多.
一直写,一直改,终于改对的时候就没时间了.
于是 $T1$ 爆零.
1 |
|
$a$
暴力 + 最优化剪枝 可过.