P3118 [USACO15JAN] 状压 DP + BFS
题意
传送门 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相关推荐
- HDU - 3247 Resource Archiver(AC自动机+状压dp+bfs)
题目链接:点击查看 题目大意:给出 n 个目标串和 m 个病毒串,要求构造出一个长度最短的,且包含全部 n 个目标串,但是不能包含任意一个病毒串的01字符串,输出其最短长度 题目分析:比较综合的一道题 ...
- [状压DP][BFS][哈希]JZOJ 3243 Cube
Description 你被困在一个密室里.经过一轮摸索,你在密室里有所发现: 1.密室是一个呈m×n网格的长方形,地面有六个格子被上了色: 2.密室地面部分格子可能有障碍物: 3.密室的某一格有一个 ...
- 洛谷P2622 关灯问题II【状压dp+bfs】
P2622 关灯问题II 题目描述 现有n盏灯,以及m个按钮.每个按钮可以同时控制这n盏灯--按下了第i个按钮,对于所有的灯都有一个效果.按下i按钮对于第j盏灯,是下面3中效果之一:如果a[i][j] ...
- Tunnels 状压DP+BFS
Bob is travelling in Xi'an. He finds many secret tunnels beneath the city. In his eyes, the city is ...
- [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 ...
- Tunnels HDU - 4856 (bfs状压dp)
Tunnels HDU - 4856 Bob is travelling in Xi'an. He finds many secret tunnels beneath the city. In his ...
- HDU-4856 Tunnels(BFS状压DP)
Tunnels http://acm.hdu.edu.cn/showproblem.php?pid=4856 Time Limit: 3000/1500 MS (Java/Others) Mem ...
- QDUOJ 来自xjy的签到题(bfs+状压dp)
来自xjy的签到题 Description 爱丽丝冒险来到了红皇后一个n*n大小的花园,每个格子由'.'或'#'表示,'.'表示爱丽丝可以到达这个格子,'#'表示爱丽丝不能到达这个格子,爱丽丝每1分钟 ...
- 【状压DP】最优配对问题(jzoj 3420)
最优配对问题 jzoj 3420 题目大意: 在平面上有n个点,现在要把他们拼成n/2对,拼接两个点的代价是他们的平面距离,现在问代价总和最小是多少 输入样例 4 8730 9323 -3374 39 ...
最新文章
- 最近5年,诺贝尔化学奖都颁给了谁?
- P1005 矩阵取数游戏(__int128模板/简单dp)
- Java / Web项目中的NPM模块Browser-Sync
- 通州区机器人比赛活动总结_马驹桥镇中心小学在2017通州区青少年机器人竞赛中勇创佳绩...
- python123手机版math库-python学习笔记---math,random,operator(三)
- 多重背包单调队列优化思路_多重背包问题
- OpenCV——PS 图层混合算法(一)
- python书籍下载网站_Python 精品开源电子书网站
- Gh0st3.6编译和源码免杀问题
- 多线程实时数据采集MFC VISUAL C++ /C++
- 《守望先锋》架构设计和网络同步
- Python网络爬虫开发实战,ADSL 拨号代理
- Java算法之 循序搜寻法
- CSS——CSS定位※ ( position )
- 失业在家做什么赚钱好?失业在家怎么赚钱?
- 一键反推食谱,与狗对话,识别女票表情…愚人节,AI 也被玩坏了
- SVN的学习(SVN的简单说明、SVN的安装与配置、SVN与GIT的区别)
- 模块“CHUSBDLL.DLL.dll“可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86或x64版本兼容 【已解决】
- cad转换pdf怎么转换?
- linux实现双网卡不同网段互通