题意

传送门 P3118 [USACO15JAN]Moovie Mooving

题解

爆搜至少 O(N!)O(N!)O(N!),考虑状态压缩 DPDPDP。dp[i]dp[i]dp[i] 代表集合 iii 中电影全部的排列能达到的最大 ttt,使 [0,t][0,t][0,t] 都被电影覆盖。
dp[i∣1<<j]=max0≤j<N且i>>j&1=0{dp[i∣1<<j],upper_bound(dp[i])+D[j]}dp[i|1<<j]=max_{0\leq j<N且i>>j\&1=0}\{dp[i|1<<j],upper\_bound(dp[i])+D[j]\}dp[i∣1<<j]=max0≤j<N且i>>j&1=0​{dp[i∣1<<j],upper_bound(dp[i])+D[j]} 答案为满足 dp[i]≥Ldp[i]\geq Ldp[i]≥L 的电影数最小的 iii,那么照拓扑 DPDPDP 的做法 BFSBFSBFS 求解即可。

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
#define inf 0x3f3f3f3f
#define maxn 20
#define maxc 1000
int N, L, D[maxn], C[maxn], B[maxn][maxc];
int cnt[1 << maxn], deg[1 << maxn], dp[1 << maxn];int main()
{scanf("%d%d", &N, &L);for (int i = 0; i < N; i++){scanf("%d%d", D + i, C + i);for (int j = 0; j < C[i]; j++){scanf("%d", B[i] + j);}}int n = 1 << N;for (int i = 1; i < n; i++){deg[i] = cnt[i] = cnt[i >> 1] + (i & 1);}queue<int> q;q.push(0);int res = -1;while (!q.empty()){int s = q.front();q.pop();if (dp[s] >= L){res = cnt[s];break;}for (int i = 0; i < N; i++){if (!(s >> i & 1)){int nxt = s | 1 << i, j = upper_bound(B[i], B[i] + C[i], dp[s]) - B[i] - 1;dp[nxt] = max(dp[nxt], D[i] + (j == -1 ? -inf : B[i][j]));if (--deg[nxt] == 0){q.push(nxt);}}}}printf("%d\n", res);return 0;
}

P3118 [USACO15JAN] 状压 DP + BFS相关推荐

  1. HDU - 3247 Resource Archiver(AC自动机+状压dp+bfs)

    题目链接:点击查看 题目大意:给出 n 个目标串和 m 个病毒串,要求构造出一个长度最短的,且包含全部 n 个目标串,但是不能包含任意一个病毒串的01字符串,输出其最短长度 题目分析:比较综合的一道题 ...

  2. [状压DP][BFS][哈希]JZOJ 3243 Cube

    Description 你被困在一个密室里.经过一轮摸索,你在密室里有所发现: 1.密室是一个呈m×n网格的长方形,地面有六个格子被上了色: 2.密室地面部分格子可能有障碍物: 3.密室的某一格有一个 ...

  3. 洛谷P2622 关灯问题II【状压dp+bfs】

    P2622 关灯问题II 题目描述 现有n盏灯,以及m个按钮.每个按钮可以同时控制这n盏灯--按下了第i个按钮,对于所有的灯都有一个效果.按下i按钮对于第j盏灯,是下面3中效果之一:如果a[i][j] ...

  4. Tunnels 状压DP+BFS

    Bob is travelling in Xi'an. He finds many secret tunnels beneath the city. In his eyes, the city is ...

  5. [2021-09-09 T3] 序列/luogu P3943 星空(异或差分+bfs最短路+状压dp)

    序列 description solution code description 题目描述 长度为nnn的序列,初始全为000,每次可以选择⼀个数ai(1≤i≤l)a_i(1\le i\le l)ai ...

  6. Tunnels HDU - 4856 (bfs状压dp)

    Tunnels HDU - 4856 Bob is travelling in Xi'an. He finds many secret tunnels beneath the city. In his ...

  7. HDU-4856 Tunnels(BFS状压DP)

    Tunnels http://acm.hdu.edu.cn/showproblem.php?pid=4856 Time Limit: 3000/1500 MS (Java/Others)    Mem ...

  8. QDUOJ 来自xjy的签到题(bfs+状压dp)

    来自xjy的签到题 Description 爱丽丝冒险来到了红皇后一个n*n大小的花园,每个格子由'.'或'#'表示,'.'表示爱丽丝可以到达这个格子,'#'表示爱丽丝不能到达这个格子,爱丽丝每1分钟 ...

  9. 【状压DP】最优配对问题(jzoj 3420)

    最优配对问题 jzoj 3420 题目大意: 在平面上有n个点,现在要把他们拼成n/2对,拼接两个点的代价是他们的平面距离,现在问代价总和最小是多少 输入样例 4 8730 9323 -3374 39 ...

最新文章

  1. 最近5年,诺贝尔化学奖都颁给了谁?
  2. P1005 矩阵取数游戏(__int128模板/简单dp)
  3. Java / Web项目中的NPM模块Browser-Sync
  4. 通州区机器人比赛活动总结_马驹桥镇中心小学在2017通州区青少年机器人竞赛中勇创佳绩...
  5. python123手机版math库-python学习笔记---math,random,operator(三)
  6. 多重背包单调队列优化思路_多重背包问题
  7. OpenCV——PS 图层混合算法(一)
  8. python书籍下载网站_Python 精品开源电子书网站
  9. Gh0st3.6编译和源码免杀问题
  10. 多线程实时数据采集MFC VISUAL C++ /C++
  11. 《守望先锋》架构设计和网络同步
  12. Python网络爬虫开发实战,ADSL 拨号代理
  13. Java算法之 循序搜寻法
  14. CSS——CSS定位※ ( position )
  15. 失业在家做什么赚钱好?失业在家怎么赚钱?
  16. 一键反推食谱,与狗对话,识别女票表情…愚人节,AI 也被玩坏了
  17. SVN的学习(SVN的简单说明、SVN的安装与配置、SVN与GIT的区别)
  18. 模块“CHUSBDLL.DLL.dll“可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86或x64版本兼容 【已解决】
  19. cad转换pdf怎么转换?
  20. linux实现双网卡不同网段互通

热门文章

  1. 服务器硬盘是什么接口类型 服务器硬盘和普通硬盘区别
  2. QQ公众号如何获取接口调用凭据
  3. HotKeyManager 热键管理工具
  4. 电脑开机显示器无信号问题(亲测有效)
  5. 机器学习眼中的《人民的名义》
  6. opencv支持多种流行视频格式文件的读取
  7. IIS下配置 jsp
  8. 魅族手机使用鸿蒙系统,魅族宣布接入鸿蒙是怎么回事
  9. Java中线程的状态
  10. 【论文阅读】Point-GNN: Graph Neural Network for 3D Object Detection in a Point Cloud