基础练习6
P3870 [TJOI2009] 开关
分块和线段树都可以, 我用的分块
- 修改
- 散块: 直接根据每一个位置的数该区块内的 \(1\) 个数
- 整块: 打上标记(标记两次等于没标记)
- 查询
- 散块: 加上每一个位置的数,注意每一个位置上实际上的数应该是它自己位置上的数在异或上所处块内的标记
- 整块: 有标记就直接是这个块内的答案,不然就是区间长度减去块答案
P8818 [CSP-S 2022] 策略游戏
首先两个人选的肯定都是最值,因为如果选的不是最值,那么这个人一定可以把答案调整成最值,是最终答案对自己更有利
注意还有正负性之分
然后就可以分类讨论了
得分最大化先手, 得分最小化后手
- 当先手可选区间的最大值 \(\ge0\) 时
- 当后手可选区间 \(\ge 0\) 时,
此时二人无论怎样选, 答案都是正数, 那么先手一定选最大值,后手一定选最小值 - 当后手可选区间 正负都有时
后手可以使答案为负(选一个负数,最小值), 而先手要让负数最大则也选最小值 - 当后手可选区间\(\leq 0\) 时,和上面情况一样
- 当后手可选区间 \(\ge 0\) 时,
- 当先手可选区间正负都有时
- 当后手可选区间 \(\ge 0\) 时,
和先手全正,后手全负的情况一样 - 当后手可选区间 正负都有时
- 首先,后手一定可以使这个答案是一个负数,而先手如果手上可以选出 \(0\) 那么一定选 \(0\)
- 否则, 先手要使负数的绝对值最小,则他自己就会选出正数最小值,和负数最大值, 而后手会让答案为负的前提下选择最值
- 当后手可选区间 \(\leq 0\) 时
两人都选出负数,后手会让绝对值最小,选出最大值, 先手让绝对值最大,选出最小值
- 当后手可选区间 \(\ge 0\) 时,
- 当先手可选区间\(\leq 0\) 时
- 当后手可选区间 \(\ge 0\) 时,
答案会是负数, 所以先手让绝对最小,拿最大, 而后手让绝对值最大,拿最大 - 当后手可选区间 正负都有时,
和上面情况一样 - 当后手可选区间 \(\leq 0\) 时,
答案为正,先手会让答案绝对值最大,后手会让答案绝对值小, 最小和最大
- 当后手可选区间 \(\ge 0\) 时,
P2014 [CTSC1997] 选课
首先把 \(0\) 也当成课, 把 可选课数 \(+1\)
树上背包
设状态 \(f_{i,j}\) 表示 \(i\) 节点及其子树内选出 \(j\) 门课的最大学分
初始化: \(f_{i, 1} = a_i\) 即只选自己
答案 : \(f_{0, m}\)
转移 : \(f_{u,j} = max(f_{u, j}, f_{v, k} + f_{u, j - k})\), 也就是在\(u\)上选\(j\)个的一种方案是在自己这里选\(j-k\) 个在子节点子树上 选\(k\) 个, 一共 \(j\) 个
注意:\(k\)的转移方向任意,\(j\)需要按照从大到小转移
边界: \(1 \leq j \leq m\) , \(1 \leq k \leq j - 1\)

浙公网安备 33010602011771号