Cunning Gena

analysis

首先我们看到数据范围,这个题目中的 m 给定的很小,所以我们可以考虑用状压 dp 解决这个题目。当然这个题目貌似用背包也是可以的,有神犇是拿背包做的我看见好像。

我们压缩的状态就是我们可以用来解决的题目编号。

状态表示:fi,j 表示选择了前 i 个人中,解决了的问题为 j最小花费

状态计算:

fi,j|simin(fi1,j+xi,fi,j|si)

空间复杂度 O(n2m) 会炸,所以我们考虑优化:

由于每一次的转移只和上一层的有关,考虑滚动数组优化。

空间复杂度 O(2m+1),时间复杂度 O(n2m)。(想写 O() 来着)

code time

#include <bits/stdc++.h> using namespace std; #define ll long long #define rl register ll #define foa(i, a, b) for(rl i=a; i < b; ++ i) #define fos(i, a, b) for(rl i=a; i <= b; ++ i) #define fop(i, a, b) for(rl i=a; i >= b; -- i) #define ws putchar(' ') #define wl putchar('\n') template <class T> inline void waw(T x) { if(x > 9) waw(x / 10); putchar(x % 10 ^ 48); } template <class T> inline void ww(T x) { if(x < 0) x = ~x + 1, putchar('-'); waw(x); } template <class T> inline void read(T &res) { char ch = getchar(); bool f = 0; res = 0; for(; !isdigit(ch); ch = getchar()) f |= ch == '-'; for(; isdigit(ch); ch = getchar()) res = (res << 1) + (res << 3) + (ch ^ 48); res = f ? ~res + 1 : res; } const ll N = 2100000, M = 110; ll n, m, b, f[2][N], minn = 2e18; struct node { ll x, k, q; bool operator <(const node &x) const { return k < x.k; } } a[M]; int main() { read(n), read(m), read(b); fos(i, 1, n) { ll cnt; read(a[i].x), read(a[i].k), read(cnt); while(cnt -- ) { ll x; read(x); a[i].q |= 1 << x - 1; } } sort(a + 1, a + 1 + n); foa(i, 1, (1 << m)) f[0][i] = 2e18; fos(i, 1, n) { memcpy(f[i & 1], f[(i - 1) & 1], sizeof f[(i - 1) & 1]); foa(j, 0, (1 << m)) f[i & 1][j | a[i].q] = min(f[i & 1][j | a[i].q], f[(i - 1) & 1][j] + a[i].x); minn = min(minn, f[i & 1][(1 << m) - 1] + a[i].k * b); } if(minn == 2e18) minn = -1; ww(minn), wl; return 0; }

__EOF__

本文作者carp
本文链接https://www.cnblogs.com/carp-oier/p/17770796.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   carp_oier  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示