atcoder ABC402 部分题解
Atcoder ABC 402 部分题解
D - Line Crossing
题意
圆上均匀分布 \(n\) 个点,有 \(m\) 条直线每条直线连接点 \(a_i,b_i\) ,有多少条直线相交。
题解
考虑求平行线数量,容易发现 \((a+b)~mod~n\) 相等的线是互相平行的。
E - Payment Required
题意
有 \(n\) 道题,每道题有 \(P_i\) 概率通过,答一次就要 \(C_i\) 代价,若第一次通过获得 \(S_i\) 价值,在总共不超过 \(x\) 代价下求期望价值最大。
题解
只有第一次通过有价值,考虑状压 \(f_{s,v}\) 表示当前通过 \(s\) 集合内的题,最大可用价值是 \(v\) ,抵达最终状态的最优价值,注意期望 DP 的转移通常定义为某个起始状态到任意一个最终状态的最优价值。
选已通过的题必然不优,转移时枚举一个不在 \(s\) 中的题目 \(k\) 尝试做这道题,有通过不通过两个情况,于是有转移:
答案为 \(f_{\varnothing,x}\) 。
F - Path to Integer
题意
给定 \(n*n\) 网格,\(1\leq a_i \leq 9\),找到一条从 \((1,1)\) 到 \((n,n)\) 只能向右向下的线路,使路径数字拼起来模 \(m\) 最大。
题解
以下运算均在模 \(m\) 意义下进行。
模运算不好处理,考虑暴力枚举,枚举整个线路是 \(2^{2n}\) 次,不能通过。
使用折半搜索,分别枚举前 \(n\) 步和后 \(n-1\) 步的答案,两条路径交汇点在对角线上,计一条前半段路径低到对角线一点,从该对角线出发的所有路径的数字构成集合 \(S\) ,对于前半段数字,对答案的贡献是 \(w'=w\cdot 10^{n}\) ,则我们找到 \(S\) 中最大的值 \(a\) 满足 \(a+w' < m\) ,也就是不做更多的取模,作为候选答案,同时选择 \(S\) 中的最大值拼起来也是候选答案。
这是因为在模 \(m\) 意义下,\(w'\) 和 \(S\) 中的数组合,最多只会再模一次 \(m\) ,讨论这一次取模是否存在即可。复杂度 \(O(n2^n)\) 。
G - Sum of Prod of Mod of Linear
题意:
求 :
题解
对着题解口胡,妙妙题。
将式子全部拆开,就是许多类欧几里得形式的求和,其中 \(\sum y_1y_2\) 比较特殊单独求,其中 \(y_i=\lfloor\frac{Ak+B_i}{M}\rfloor\) 。
\(\sum \lfloor\frac{Ak+B_1}{M}\rfloor\lfloor\frac{Ak+B_2}{M}\rfloor\) 和 \(\sum \lfloor\frac{Ak+B_2}{M}\rfloor^2\) 很像,我们考虑求出二者的差值:
由于 \(B_1\leq B_2<M\) ,后面的值只可能取 \(0\) 或 \(1\) ,现在考虑当 \(\lfloor\frac{Ak+B_2}{M}\rfloor\) 为 \(c\) 时,\(\lfloor\frac{Ak+B_2}{M}\rfloor=c\) 和 \(\lfloor\frac{Ak+B_1}{M}\rfloor=c\) 的 \(k\) 分别构成一个区间。
具体的,解 \(c \leq \lfloor\frac{Ak+B}{M}\rfloor\),解出 \(k \geq \lfloor\frac{cM-B-1}{A}\rfloor+1\) ,那么能取到 \(c\) 的区间就是 :
那当取 \(c\) 时,前者保证 \(k \geq \lfloor\frac{cM-B_2-1}{A}\rfloor+1\),后者需要保证取 \(c-1\) ,选右区间为 \(k \leq \lfloor\frac{(c+1-1)M-B_1-1}{A}\rfloor\) ,那右边那个差值为 \(1\) 的总数就是两个位置的差,我们枚举这个 \(c=\lfloor\frac{Ak+B_2}{M}\rfloor\) :
其中 \(d_c^i=\lfloor\frac{cM-B_i-1}{A}\rfloor\) ,其中 \(c=X\) 时的上界会被 \(N\) 限制,单独拿出来算,最后的这个和式还是类欧形式,总结下来只需要求 \(\sum y,\sum xy,\sum y^2\) 就可以了。
其中这些式子的截距是负数,将 \(x\) 平移一位变成正数。
\(c=0\) 时是负数,不过被乘掉了。
题外话:笔者先观察到两线平行,以为可以搞一个类似双线类欧的东西,用 \(U_1,U_2,R\) 处理,这么做就不能优化了,要翻转坐标系翻转 \(U,V\) ,而两个空间大小不等,补充一个 \(R\) 会造成多解。这么做是加强了本题,本题限制了 \(B_1,B_2<M\) 才保证后面的差值式子可以计算。

浙公网安备 33010602011771号