联赛模拟测试 15

A.游戏

每个装备只能用一次,那么我们就可以考虑二分图匹配。
用装备向它的属性值建边,然后从属性值的 \(1\) 开始跑匈牙利。
如果不能匹配了就是最大的攻击次数。

需要注意,如果每次 \(memset\) 一定会 \(T\) ,所以我们记录一个时间戳,每次判断 \(vis\) 数组是否等于时间戳即可。

B.嘟嘟噜

裸的约瑟夫问题,容易得到通项公式 \(p_{i} = (p_{i-1} + m) % i\)\(i\) 为剩余人数。
数据范围 \(1e9\) ,直接 \(O(n)\) 不可过,看到 \(m\) 远小于 \(n\) ,于是可以优化。
我们找到一次最多可以条几步,然后直接加上这么多,时间大大优化,可过。
跳的步数应该是 \(min(n - i - 1,\frac{i - x}{m}- 1)\)

C.天才绅士少女助手克里斯蒂娜

题目给出的是向量相乘,即叉积。
设两个向量为 \((x,y),(a,b)\) ,其叉积为 \((ay-bx)\) ,然后我们就可以推柿子。

\[\begin{array}{ll} ans &=& \sum \limits_{i=l}^r \sum \limits_{j=i+1}^r (v_i \times v_j)^2 \\ &=& \sum \limits_{i=l}^r \sum \limits_{j=i+1}^r (x_iy_j-x_jy_i)^2 \end{array} \]

然后我们继续乘法分配率:

\[\begin{array}{ll} ans &=& \sum \limits_{i=l}^{r} \sum \limits_{j=i+1}^r (x_i^2y_j^2+x_j^2y_i^2-2x_iy_ix_jy_j) \\ &=& \sum \limits_{i=l}^r \sum \limits_{j=i+1}^r x_i^2y_j^2 + \sum \limits_{i=l}^r \sum \limits_{j=i+1}^r x_j^2y_i^2 - \sum \limits_{i=l}^r \sum \limits_{j=i+1}^r 2x_iy_ix_jy_j \\ &=& \sum \limits_{i=l}^r \sum \limits_{j=l}^r [i!=j]\times x_i^2y_j^2 - \sum \limits_{i=l}^r \sum \limits_{j=l}^r [i!=j]\times x_iy_ix_jy_j \\ &=& \sum \limits_{i=l}^r x_i^2 (\sum \limits_{j=l}^r y_j^2 -y_i^2) - (\sum \limits_{i=l}^r x_iy_i (\sum \limits_{j=l}^r x_jy_j - x_iy_i)) \\ &=& \sum \limits_{i=l}^r x_i^2 \sum \limits_{j=l}^r y_j^2 - \sum \limits_{i=l}^r x_i^2y_i^2 - (\sum \limits_{i=l}^r x_iy_i \sum \limits_{j=l}^r x_jy_j - \sum \limits_{i=l}^r x_i^2 y_i^2) \\ &=& \sum \limits_{i=l}^r x_i^2\times \sum \limits_{i=l}^ry_i^2 - (\sum \limits_{i=l}^r x_iy_i)^2\end{array} \]

线段树维护 \(\sum \limits_{i=l}^r x_i^2\) , \(\sum \limits_{i=l}^r y_i^2\) , \(\sum \limits_{i=l}^r x_iy_i\) 即可。

D.凤凰院凶真

最长公共上升子序列 \(LCIS\) 板子。
枚举的时候记录一下上次的更新位置和更新点即可,输出方案的时候递归输出。

\(Never\ Give\ Up\)

posted @ 2020-10-17 18:04  Vocanda  阅读(101)  评论(0编辑  收藏  举报