Codeforces Round 857 (Div. 2)

C

  1. 构造题要自己给自己添加条件

    如此题可以假设可以每个数都不同,异或和为 0

    然后如果想要异或和为 0,可以让一行都有一个 bit,一列都有一个 bit

    为了数字不一样,可以采取只有当前行(列)二进制有 bit 这一位才刷上这一个 bit

  2. 此题也可以假设异或和为任意数字,然后随机初始化一行一列,再递推其他值,如果有重复值,就再次重来,显然这种方法简单得多

    这种思想先随机初始化,再 dp

D

  1. debug 能力差
  2. 漏了一种特殊情况 0 的特判
  3. 倍增树状数组不熟悉
  4. 可以用 multiset 维护的操作,却自己用权值树状数组实现 :)
  5. erase 会删除所有节点,所以 multiset 用 s.erase(s.find(x)) 保证 x 存在
  6. set 的迭代器只支持 ++ 操作,不支持 + 1
  7. 此题是由简单到复杂思想的典型应用,先思考一个节点,再扩展到多个节点

E

  1. D 题 debug 太久,这题刚好写完 :)

  2. 200000 级别的 multi case,不要随意用 memset!!应该在输入数据时根据数据规模初始化

  3. 我使用了 权值树状数组优化 dp $log^2 n$ 级别

    树状数组维护不可逆信息还不熟练

    步骤是先枚举所影响到的父集,再枚举父元素的直系儿子更新(首先将自己设为所在元素的大小,否则丢失信息,所以原数组的信息也要维护)

    也可以写权值线段树 $logn$ 级别

  4. 去除无用数字思想

  5. dp 设计

F

  1. 推迟思想,当钱不够了,就可以向路径上最大表演利益的点选择表演

Codeforces Round 857 (Div. 2)
https://lllei.top/2023/03/15/contest0/
作者
Lei
发布于
2023年3月15日
许可协议