• Atcoder做题总结


    ARC058C

    发现 \(x+y+z\) 最多只有 \(17\) ,考虑状压,状态中第 \(i\) 位表示是否可以得到和为 \(i\) 的后缀。
    注意一下每个位置是放 \(1\) ~ \(10\) 而非 \(0\) ~ \(9\)

    ARC133D

    区间异或和不好搞,差分一下设 \(w_i = XOR_{k=1}^i k\)
    容易发现规律: \(w_{4x}=4x\) , \(w_{4x+1}=1\) , \(w_{4x+2}=4x+3\) , \(w_{4x+3}=0\)
    于是就可以快速计算了。

    ARC129D

    \(a_i\) 是在 \(i\) 处的操作次数,则有

    \[2a_i - a_{i-1} - a_{i+1} = -A_i \]

    注意到这个形式类似差分,所以设 \(b\)\(a\) 的差分,由上述式子可以得到 \(b_2\) ~ \(b_n\) ,又因为 \(\sum b_i=0\) 可以算出 \(b_1\) ,接下来找一个最小的 \(a_1\) ,使所有 \(a_i\) 都非负即可。

    ARC129E

    做不明白的网络流题终于有个懂的了!
    最小代价 => 最小割
    首先当然是 \(n\) 排点,每排 \(m\) 个依次相连,\(S\) 连最左边,最右边连 \(T\) ,此时割一条边 \((i,i+1)\)\(i\) 处的取值。
    剩下的贡献,考虑对于一个 \([x,x+1]\) 的区间,它有贡献当且仅当两侧取的点穿过这个区间,于是由一侧的 \(x+1\) 连至另一侧的 \(x+1\) ,流量为 \(w\),注意要合并多条边。

    ARC130F

    有些许恶心。
    跟“鱼戏团表演”可以说是非常相似了。
    观察题目性质,当操作次数趋于无穷时,最后的结果会像是一个凸包的形式。
    如果只是这样就没有什么恶心的地方了,直接求凸包算就行。
    但是!
    问题在于题目是取整的,这就导致了得到的结果实际上应该是折线。
    对于“凸包”上的两个点,如何算他们之间的贡献呢?
    很容易犯的错误是直接把直线画出来,然后对每个点下取整。
    我们发现的问题在于,“下取整”这一操作会使直线发生改变,从而影响后面的答案。
    稍微玩一下就能确定算贡献的过程,如果区间是 \((l,r)\) ,且 \(a_l < a_r\) ,就应该从 \(l\) 开始向右一个一个求贡献, \(f_i\) 应该由 \(f_{i-1}\)\(f_r\) 得到,而非 \(f_{l}\)\(f_r\)
    正因为这一奇特的求贡献方式,我们要求的“凸包”长歪了。
    联系题目性质,知道求凸包时斜率应下取整

  • 相关阅读:
    Boostrap响应式与非响应式
    Linux文件处理命令
    Linux各目录作用
    linux系统安装
    并发编程之基础( 五)
    Extjs自定义验证介绍
    javascrict中innerhtml和innerText的关系
    List泛型的应用
    winform项目改项目名称
    math.random用法
  • 原文地址:https://www.cnblogs.com/Kelvin2005/p/15957245.html
Copyright © 2020-2023  润新知