zoukankan      html  css  js  c++  java
  • 题解 Codeforces Round #670 (Div. 2) (CF1406)

    A Subset Mex

    枚举第一个集合的( extbf{mex}),想办法让它合法,于是就可以算出第二个集合的( extbf{mex}),在两个都合法的情况下取它们和的最大值。

    B Maximum Product

    正数和负数分开算,枚举选多少个正数,如果最后乘积是正的就让选的数绝对值尽量大,否则让选的数绝对值尽量小。

    C Link Cut Centroids

    如果本来重心就唯一就随便找一条边把它砍了再加上,否则把其中一个重心子树里的某个叶子节点砍下来连在另一个重心上。

    D Three Sequences

    发现如果(a_i>a_{i-1}),那么(b_i=b_{i-1}+a_i-a_{i-1},c_i=c_{i-1}),否则(b_i=b_{i-1},c_i=c_{i-1}+a_i-a_{i-1})。我们假设(c_1=x),那么(b_1=a_1-x),很显然(b_n=b_1+sum_{i=2}^n max(0,a_i-a_{i-1}))。由于我们要求(min{max(b_n,c_1)}),令(sum_{i=2}^n max(0,a_i-a_{i-1})=s),那么(x=frac{a_1+s}{2})。由于每次修改只对(a_l-a_{l-1},a_{r+1}-a_r)有影响。直接维护(s)即可。

    E Deleting Numbers

    考虑把(10^5)以内的质数全部预处理出来(大概(9600)个),然后其实一个数(n)如果不是质数必然有(leq sqrt{n})的质因子,所以我们把质数分成(sqrt{9600} = 97)组,把每组里面的质因数(p)拿出来做(B)操作,如果返回值和应有值不一样,说明有(p)这个因子,于是就把(p^k)拿出来做(A)操作直到返回为(0),那么可以确定最终答案有(p^k)因子。一组质数处理完之后再问一遍(1)的倍数,这样可以找到第一个最小的质因子,再直接问其他的质因子的倍数就行了。

  • 相关阅读:
    PHP
    linux文件分割(将大的日志文件分割成小的)
    centos安装ssdb
    SSDB 数据库如何换用 rocksdb 引擎?
    A PHP extension for Facebook's RocksDB
    看电影有感
    视频格式(转的豆瓣)
    7月7号项目讲解总结
    java注解Annotation
    xml的解析
  • 原文地址:https://www.cnblogs.com/Kylin-xy/p/tijie-CF1406.html
Copyright © 2011-2022 走看看