都硎唷 发表于 2025-11-21 07:50:00

11.20 C 盲盒流水线

题解 : 盲盒流水线

link
给定 \(n\) 个物品,每个物品有价值和质量,\(q\) 次询问,在 \(\) 中选质量不超过 \(m\) 的物品,每个物品至多选一次,并且要让价值最大
$ 1 \leq n \leq 20000$
$ 1 \leq m_i \leq 500$
$ 1 \leq q \leq 100000$
第一眼,这不是背包吗?
暴力:\(O(nmq)\) \(49pts\)
const int N = 2e4 + 20, mod = 998244353;int n, v, w, q, g, f, p;signed main(){   ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);    cin >> n;    for(int i = 1; i > v >> w;    cin >> q;    for(int qwq = 1, l, r, m, cnt = 0; qwq > l >> r >> m;      g = 1;      for(int i = l; i = w; --j){                if(f < f] + v)f = f] + v, g = g] % mod ;                else if(f == f] + v)f = f] + v, (g += g]) %= mod;               }      }      for(int i = 1; i > qwq;    B = n / (sqrt(qwq) + 1) + 1, cnt = n / B;    for(int i = 1; ir_ >> m_;      if(bel == bel){            g = 1;int as = 0, zz = 0;            for(int i = l_; i = w; --j){                  if(f < f] + v)f = f] + v, g = g] % mod ;                  else if(f == f] + v)f = f] + v, (g += g]) %= mod;                     zz = f < f ? j : zz;                }            }            for(int i = 1; iq.r >> q.m, q.id = i;    solve(1, n, 1, qwq);    for(int i = 1; i
页: [1]
查看完整版本: 11.20 C 盲盒流水线