COGS439. [网络流24题] 软件补丁
【问题描述】
【输入格式】
【输出格式】
【输入输出样例】
这题其实不是网络流。
状态压缩表示各个bug的存在状态,求从1111111到0000000的最短路径。
不需要显式建边(也建不下)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
#include<queue>
#define LL long long
using namespace std;
const int INF=1e9;
const int mxm=<<;
const int mxn=;
int n,m;
int dis[mxm];
struct pk{
int q,c;//必须存在的错误,不能存在的错误
int k1,k2;//修复效果
int w;
}a[mxn];
bool inq[mxm];
bool pd(int x,int y){//判断补丁可否应用
if((x|a[y].q)!=x)return ;
if((x&a[y].c))return ;
return ;
}
void Spfa(){
memset(dis,0x3f,sizeof dis);
queue<int>q;
q.push(n);
dis[n]=;
while(!q.empty()){
int u=q.front();q.pop();inq[u]=;
for(int i=;i<=m;i++){
if(pd(u,i)){
int v=(u^(u&a[i].k2))|a[i].k1;
if(dis[v]>dis[u]+a[i].w){
dis[v]=dis[u]+a[i].w;
if(!inq[v]){
inq[v]=;
q.push(v);
}
}
}
}
}
return;
}
int main(){
freopen("bugs.in","r",stdin);
freopen("bugs.out","w",stdout);
int i,j;
scanf("%d%d",&n,&m);
char s[];
for(i=;i<=m;i++){
scanf("%d%s",&a[i].w,s);
for(j=;j<n;j++){
if(s[j]=='+') a[i].q|= (<<j);
if(s[j]=='-') a[i].c|= (<<j);
}
scanf("%s",s);
for(j=;j<n;j++){
if(s[j]=='+') a[i].k1|= (<<j);
if(s[j]=='-') a[i].k2|= (<<j);
}
}
n=(<<n)-;
Spfa();
if(dis[]!=0x3f3f3f3f)printf("%d\n",dis[]);
else printf("-1\n");
return ;
}
COGS439. [网络流24题] 软件补丁的更多相关文章
- 【网络流24题】 No.12 软件补丁问题(最小转移代价 最短路)
[题意] T 公司发现其研制的一个软件中有 n 个错误, 随即为该软件发放了一批共 m 个补丁程序. 每一个补丁程序都有其特定的适用环境, 某个补丁只有在软件中包含某些错误而同时又不包含另一些错误时才 ...
- 【刷题】LOJ 6009 「网络流 24 题」软件补丁
题目描述 某公司发现其研制的一个软件中有 \(n\) 个错误,随即为该软件发放了一批共 \(m\) 个补丁程序.每一个补丁程序都有其特定的适用环境,某个补丁只有在软件中包含某些错误而同时又不包含另一些 ...
- Libre 6009 「网络流 24 题」软件补丁 / Luogu 2761 软件安装问题 (最短路径,位运算)
Libre 6009 「网络流 24 题」软件补丁 / Luogu 2761 软件安装问题 (最短路径,位运算) Description T 公司发现其研制的一个软件中有 n 个错误,随即为该软件发放 ...
- [网络流24题] 洛谷P2761 软件补丁问题
题意:某公司发现其研制的一个软件中有 n个错误,随即为该软件发放了一批共 m 个补丁程序.对于每一个补丁 i ,都有 2 个与之相应的错误集合 B1(i)和 B2(i),使得仅当软件包含 B1(i)中 ...
- BZOJ_1221_ [HNOI2001]_软件开发(最小费用流,网络流24题#10)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1221 n天,每天需要r个毛巾,用完以后可以洗,要么花fa洗a天,要么花fb洗b天,毛巾不够了可 ...
- 【线性规划与网络流 24题】已完成(3道题因为某些奇怪的原因被抛弃了QAQ)
写在前面:SDOI2016 Round1滚粗后蒟蒻开始做网络流来自我拯救(2016-04-11再过几天就要考先修课,现在做网络流24题貌似没什么用←退役节奏) 做的题目将附上日期,见证我龟速刷题. 1 ...
- 【算法】【网络流24题】巨坑待填(成功TJ,有时间再填)
------------------------------------------------------------------------------------ 17/24 --------- ...
- 网络流基础&网络流24题
网络最大流 dinic+当前弧优化. const int N=10007,M=100007,inf=1e9; int s,t,head[N],ver[M],edge[M],Next[M],tot=1, ...
- COGS743. [网络流24题] 最长k可重区间集
743. [网络流24题] 最长k可重区间集 ★★★ 输入文件:interv.in 输出文件:interv.out 简单对比时间限制:1 s 内存限制:128 MB «问题描述: «编 ...
随机推荐
- 敏捷开发与jira之项目现状
从三个方面概述项目的现状 资源组织结构 资源中的特殊角色 •反馈问题接口人 –测试兼,处理实施反馈回来的问题,Bug复现后分配给开发负责人:需求指向需求做进一步的需求分析 •流程反馈处理人 –测试或开 ...
- 为什么数据库有时候不能定位阻塞(Blocker)源头的SQL语句
在SQL Server数据库或OACLE数据库当中,通常一个会话持有某个资源的锁,而另一个会话在请求这个资源,就会出现阻塞(blocking).这是DBA经常会遇到的情况.当出现SQL语句的阻塞时,很 ...
- tomcat 设置jvm内存
修改 tomcat安装目录\bin\catalina.bat在set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%这行下面加上 set JAVA_OPTS=%JAVA_ ...
- $.parseJson 在 firefox 下返回 null 的问题
最近调查一个浏览器兼容性问题,在 IE, chrome下都运行正常,但是在 firefox 下运行时: $.parseJson(xxx) 返回 null,所以导致了 无法正常运行,调查的结果是因为 返 ...
- 安装Visual Studio的插件AnkhSvn
安装Visual Studio的插件AnkhSvn 安装AnkhSvn(VS插件).下载地址:http://download.csdn.net/detail/luqingfei/4538807 Ank ...
- C++ 用宏实现swap(a,b)
#include <iostream> using namespace std; #define SWAP(a,b) a^=b,b^=a,a^=b int main(void){ int ...
- x01.os.18: MBR
硬盘不同于软盘,它是要分区的.这时,mbr(master boot record)便不可少了.安装 os 硬盘的第一扇区,开始有一小段不多于 446 字节的程序,然后是分区表 512-446-2 字节 ...
- 权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现2
权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现 ----参考Nginx中负载均衡算法实现 与上一遍博客 http://www.cnblogs.com/hu ...
- stm32 u8 u16 u32
u8 是 unsigned char u16 是 unsigned short u32 是 unsigned int
- amCharts图表中的JavaScript中文注释引起的浏览器兼容性问题
近期用amCharts做图表.一切都很顺利,然后演示的时候掉链子了,平时开发的时候都是用的火狐和谷歌,加上这种图表框架本来就号称兼容性极好,也没有在ie上测试,演示的机器上恰巧用的是ie11,发现一个 ...