题意

描述不清。。。

Sol

网络流24题里面怎么会有状压dp??

真是狗血,不过还是简单吧。

直接用$f[sta]$表示当前状态为$sta$时的最小花费

转移的时候枚举一下哪一个补丁可以搞这个状态

但是这玩意儿有后效性,可以用SPFA消去

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
const int MAXN = , INF = 1e9 + ;
inline int read() {
char c = getchar(); int x = , f = ;
while(c < '' || c > '') {if(c == '-') f = ; c = getchar();}
while(c >= '' && c <= '') x = x * + c - '', c = getchar();
return x * f;
}
int N, M;
int tim[MAXN], dis[], B1[MAXN], B2[MAXN], F1[MAXN], F2[MAXN], vis[];
int SPFA() {
queue<int> q;
q.push(( << N) - ); dis[( << N) - ] = ;
while(!q.empty()) {
int sta = q.front(); q.pop(); vis[sta] = ;
for(int i = ; i <= M; i++) {
int now = sta;
if(((sta & B1[i]) == B1[i]) && ((sta & B2[i]) == )) {
now = now & (~F1[i]);
now = now | F2[i];
if(dis[now] > dis[sta] + tim[i]) {
dis[now] = dis[sta] + tim[i];
if(!vis[now]) q.push(now);
}
}
}
}
return dis[] < INF ? dis[] : ;
}
int main() {
N = read(); M = read();
memset(dis, 0x3f, sizeof(dis));
for(int i = ; i <= M; i++) {
char s1[], s2[];
scanf("%d %s %s", &tim[i], s1, s2);
for(int j = ; j < N; j++)
if(s1[j] == '+') B1[i] |= << j;
else if(s1[j] == '-') B2[i] |= << j;
for(int j = ; j < N; j++)
if(s2[j] == '-') F1[i] |= << j;
else if(s2[j] == '+') F2[i] |= << j;
}
printf("%d", SPFA());
return ;
}
/*
3 3
1 000 00-
1 00- 0-+
2 0-- -++ */

洛谷P2761 软件补丁问题(状压DP,SPFA)的更多相关文章

  1. 洛谷P2761 软件补丁问题 [状压DP,SPFA]

    题目传送门 软件补丁问题 题目描述 T 公司发现其研制的一个软件中有 n 个错误,随即为该软件发放了一批共 m 个补丁程序.每一个补丁程序都有其特定的适用环境,某个补丁只有在软件中包含某些错误而同时又 ...

  2. 洛谷P2761 软件补丁问题(状压dp)

    传送门 啊咧……这题不是网络流二十四题么……为啥是个状压dp…… 把每一个漏洞看成一个状态,直接硬上状压dp 然后因为有后效型,得用spfa //minamoto #include<iostre ...

  3. 【题解】洛谷P3959 [NOIP2017TG] 宝藏(状压DP+DFS)

    洛谷P3959:https://www.luogu.org/problemnew/show/P3959 前言 NOIP2017时还很弱(现在也很弱 看出来是DP 但是并不会状压DP 现在看来思路并不复 ...

  4. 洛谷 P1278 单词游戏 【状压dp】

    题目描述 Io和Ao在玩一个单词游戏. 他们轮流说出一个仅包含元音字母的单词,并且后一个单词的第一个字母必须与前一个单词的最后一个字母一致. 游戏可以从任何一个单词开始. 任何单词禁止说两遍,游戏中只 ...

  5. 洛谷P2704 [NOI2001]炮兵阵地 [状压DP]

    题目传送门 炮兵阵地 题目描述 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示),如下图 ...

  6. 洛谷P2831 愤怒的小鸟——贪心?状压DP

    题目:https://www.luogu.org/problemnew/show/P2831 一开始想 n^3 贪心来着: 先按 x 排个序,那么第一个不就一定要打了么? 在枚举后面某一个,和它形成一 ...

  7. 洛谷P2051 [AHOI2009] 中国象棋(状压dp)

    题目简介 n*m的棋盘,对每行放炮,要求每行每列炮数<=2,求方案数%9999973 N,M<=100 题目分析 算法考虑 考虑到N,M范围较小,每一行状态只与前面的行状态有关,考虑状压D ...

  8. 洛谷$P$3160 局部极小值 $[CQOI2012]$ 状压$dp$

    正解:状压$dp$ 解题报告: 传送门! 什么神仙题昂,,,反正我是没有想到$dp$的呢$kk$,,,还是太菜了$QAQ$ 首先看数据范围,一个4×7的方格,不难想到最多有8个局部极小值,过于显然懒得 ...

  9. 洛谷 [P2761] 软件补丁问题

    并不是网络流 状压+SPFA 通过题目中的描述及数据范围可知,我们状压当前的漏洞,以每个二进制位表示是否有这个漏洞,并以状压的结果为顶点,以补丁的时间为边跑SPFA即可 #include <io ...

随机推荐

  1. Hive中的一些点

    hive严格模式 Hive中Order by和Sort by的区别是什么? hive中order by,sort by, distribute by, cluster by作用以及用法 Hadoop ...

  2. MYSQL进阶学习笔记九:MySQL事务的应用!(视频序号:进阶_21-22)

    知识点十:MySQL 事务的应用 (21-22) 为什么要引入事务: 为什么要引入事务这个技术呢?现在的很多软件都是多用户,多程序,多线程的.对同一表可能同时有很多人在用,为保持数据的一致性,所以提出 ...

  3. mac系统下查看端口占用情况

    localhost:~ mhx$  lsof -i tcp:8080 COMMAND  PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NA ...

  4. Runtime.getRuntime().addShutdownHook(Thread)

    Runtime.getRuntime().addShutdownHook(Thread)为虚拟机添加关闭时添加钩子线程

  5. RESTful 架构与 RESTful 服务

    风格 ⇒ 标准 ⇒ 协议 ⇒ 实现 Representational State Transfer,是一种软件架构风格,既然是风格,就非标准或协议,而是定义了一组设计原则和约束条件.具有如下特点: 适 ...

  6. [SoapUI] Reference parameter 引用变量

    Reference parameter in WADL : Endpoint : ${#Project#DomainServer} Resource : {AdvisorID} Reference p ...

  7. 高并发服务器架构--SEDA架构分析

    纯粹转发,没有深入研究,转自:SEDA架构笔记 百牛信息技术bainiu.ltd整理发布于博客园  一.传统并发模型的缺点 基于线程的并发 特点:每任务一线程直线式的编程使用资源昂高,context切 ...

  8. Linux限制端口

    设置防火墙 iptables -a input -p 协议 -s 可以访问ip -dport端口 -j ACCEPT

  9. Rational Rose 2007 &Rational Rose 2003 下载及破解方法和汉化文件下载

    Rational Rose 2007 &Rational Rose 2003 下载及破解方法和汉化文件下载 分类: 其它2010-08-10 13:28 12926人阅读 评论(4) 收藏 举 ...

  10. 025--python初识类和对象

    一.面向对象的定义 说到面向对象,我们先来看一下面向过程的定义:面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么 ...