[网络流24题] 软件补丁问题

登临科技Goldwasser加速卡Python SDK实战:从环境配置到YOLOv5模型性能压测 本文详细介绍了登临科技Goldwasser加速卡的Python SDK实战指南,从环境配置到YOLOv5模型性能压测的全过程。通过驱动安装、SDK环境搭建、模型转换与推理优化等步骤,帮助开发者高效利用AI加速卡提升深度学习模型性能。重点分享了批量推理压测技巧和常见问题解决方案,助力开发者充分发挥Goldwasser加速卡的算力优势。 阅读详情

洛谷链接:https://www.luogu.org/problemnew/show/P2761

软件补丁问题

题目描述

一个程序总有个错误,公司经常发布补丁来修正这些错误,遗憾的是,每用一个补丁,在修正某些错误的时候,同时会加入某些错误,每个补丁都有一定运行时间。

某公司发表了一个游戏,出现了n个错误B={b1,b2,b3,……bn},于是该公司发布了m个补丁,每个补丁的应用都是有条件的(即哪些错误必须存在,哪些错误不能存在)。

求最少需要多少时间可全部修正这些错误。

输入

输入文件第一行有两个正整数n和m,n表示错误总数,m表示补丁总数,1≤n≤20,1≤m≤100。接下来m行给出了m个补丁的信息。每行包括一个正整数(表示此补丁程序的运行时间)和两个字符串,

第一个字符串描述了应用该补丁的条件。字符串的第i个字符,如果是‘+’,表示在软件中必须存在第bi号错误;如果是‘-’,表示软件中错误bi不能存在;如果是‘0’,则表示错误bi存在或不存在均可(即对应用该补丁没用影响)。

第二个字符串描述了应用该补丁的效果。字符串的第i个,如果是‘+’,表示产生了一个新错误bi;如果是‘-’,表示错误bi被修改好了;如果是‘0’,则表示错误bi不变(即原来存在的,仍然存在;原来不存在,还是不存在)。

输出

输出一个整数,如果问题有解,输出总耗时。否则输出-1。

输入样例

3 5
1 0-+ -+-
3 +– -00
4 000 00-
6 +0+ -0-
3 0+0 0-0

输出样例

7

题解

不知道为什么是网络流。。。
博主用的是动态加边、状压SPFA,因为最多有20个bug,所以状态最多有 220 2 20 种状态,在SPFA的时候,每次直接暴力检验所有补丁是否可用,然后朝下一个状态转移并更新最短路。
关于状压,每个点的状态直接用一个整数表示,用二进制01表示bug是否存在。对于每个补丁,我们将它的条件、效果中的+、-分别用二进制表示,每个补丁四个整数。这样,在跑SPFA时,就能用神奇的位运算快速运算。

代码
#include<bits/stdc++.h>
using namespace std;
const int M=2000000;
char c1[25],c2[25];
struct sd{
    int t,jian,add,con1,con2;
};
sd pat[105];
int mmp[M],dis[M],n,m;
bool vis[M];
int chan(char p,char c[])
{
    int r=0;
    for(int i=0;i<n;++i)
    if(c[i]==p)
    r+=1<<(n-i-1);
    return r;
}
void in()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;++i)
    {
        scanf("%d%s%s",&pat[i].t,c1,c2);
        pat[i].con1=chan('-',c1);
        pat[i].con2=chan('+',c1);
        pat[i].add=chan('+',c2);
        pat[i].jian=chan('-',c2);
    }
}
void ac()
{
    memset(dis,127,sizeof(dis));
    queue<int>dui;
    dis[(1<<n)-1]=0;
    dui.push((1<<n)-1);
    int f,t;
    while(!dui.empty())
    {
        f=dui.front();
        dui.pop();
        vis[f]=0;
        for(int i=1;i<=m;++i)
        {
            if(!(f&pat[i].con1)&&!((f&pat[i].con2)^pat[i].con2))
            {
                t=(f|pat[i].add|pat[i].jian)^pat[i].jian;
                if(dis[t]>dis[f]+pat[i].t)
                {
                    dis[t]=dis[f]+pat[i].t;
                    if(!vis[t])
                    {
                        vis[t]=1;
                        dui.push(t);
                    }
                }
            }
        }
    }
    if(dis[0]>=dis[M-1])printf("0"),exit(0);
    printf("%d",dis[0]);
}
int main()
{
    in();ac();
    return 0;
}
【软碟通 | UltraISO】刻录光盘教程(制作U盘启动盘) 前言 今天老师说办公室的电脑有点卡,让我给重新安装一个 Windows 7 系统。于是就用软碟通(UltraISO)在 U 盘上刻录了一个 Windows 7 镜像,然后给老师重装了系统。顺便把制作 U 盘启动盘的教程也分享给大家。 软件 UltraISO v9.7.1.3519:点击跳转(密码:dd2k) 教程 将 U 盘插到电脑上,然后鼠标右击选择格式化(制作启动盘必须格式化) 点击文件-打开 选择下载好的系统镜像(如:Windows 7) 点击启动-写入硬盘映像 选择硬盘 阅读详情

相关推荐

英飞凌TC3XX芯片---------CAN模块详解

CAN 总线是一种广泛应用于汽车、工业控制和其他领域的串行通信协议,CAN 英文名称:Controller Area Network。最初由德国的 Bosch 公司开发,用于汽车电子系统之间的通信。CAN 总线具有高可靠性、抗干扰能力强和实时性好等特点,因此被广泛应用于需要可靠数据传输的领域。CAN2.0B 协议中的 CAN 最多支持 29 位 ID,但是网络架构中使用的一般是 11 位的标准帧 ID。如下图是标准 CAN FD 帧数据结构:关于 CAN 协议相关内容,本文不作阐述。

sky的博客 3667

题解报告——程序补丁

程序补丁(bugs) 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 一个程序总有个错误,公司经常发布补丁来修正这些错误,遗憾的是,每用一个补丁,在修正某些错误的时候,同时会加入某些错误,每个补丁都有一定运行时间。 某公司发表了一个游戏,出现了n个错误B={b1,b2,b3,……bn},于是该公司发布了m个补丁,每个补丁的应用都是有条件...

306

VMware Workstation Pro 17 最新破解版安装教程(附永久激活密钥)

本文详细介绍了VMware Workstation Pro 17专业版的安装与配置指南,包括系统要求检查、官方版本安装流程、高级配置优化及常见问题排查。通过合规使用官方版本,开发者可以充分利用其强大的虚拟化能力,提升多平台开发与测试效率。

weixin_29327977的博客 3536

「网络流 24 题」软件补丁

题目描述 某公司发现其研制的一个软件中有 n nn 个错误,随即为该软件发放了一批共 m mm 个补丁程序。每一个补丁程序都有其特定的适用环境,某个补丁只有在软件中包含某些错误而同时又不包含另一些错误时才可以使用。一个补丁在排除某些错误的同时,往往会加入另一些错误。 换句话说,对于每一个补丁 i ii,都有 2 22 个与之相应的错误集合 B1(i) B_1(i)B

~不可描述~ 430

BUCK电路的大信号模型与小信号模型推导

推导开关电源信号模型的核心是将非线性开关过程线性化,常用。如需具体拓扑的推导细节,可进一步说明!

创新改变世界! 1166

告别Modern Standby!Win10/11强制S3睡眠的终极指南(含BIOS设置避坑)

本文是针对Windows 10/11用户因Modern Standby(S0低电量待机)导致睡眠耗电、发热问题的终极解决方案。文章详细对比了Modern Standby与传统S3睡眠(Suspend to RAM)的本质区别,并提供了从系统诊断、注册表修改、BIOS/UEFI设置避坑到驱动优化的完整步骤,旨在帮助用户强制启用稳定、省电的S3睡眠模式,彻底告别睡眠噩梦。

n7o8p的博客 792

洛谷P2761 软件补丁问题

题目背景none!题目描述T 公司发现其研制的一个软件中有 n 个错误,随即为该软件发放了一批共 m 个补丁程序。每一个补丁程序都有其特定的适用环境,某个补丁只有在软件中包含某些错误而同时又不包含另一些错误时才可以使用。一个补丁在排除某些错误的同时,往往会加入另一些错误。换句话说,对于每一个补丁 i,都有 2 个与之相应的错误集合 B1[i]和 B2[i],使得仅当软件包含 B1[i]中的所有错误...

蒟蒻的博客 424

【推荐100个unity插件】皮毛shader着色器 实现可以用动的毛茸茸毛绒绒效果

Unity内置渲染管线毛发着色器实现 摘要:本文介绍了Unity内置渲染管线下的毛发着色器实现方案。该方案通过多层渲染技术模拟毛发效果,支持基础光照模型(环境光、漫反射和镜面反射),提供毛发长度调节功能。主要包含10个渲染通道,采用逐步增加的FURSTEP参数(0.05-0.55)分层渲染毛发,每层使用相同的着色器代码但不同参数值。该实现仅适用于内置渲染管线,不支持毛发动态效果,代码结构简洁,通过FurHelper.cginc包含核心着色逻辑。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2676

软件补丁问题

软件补丁问题 不知道为什么放在网络流24题里面,我感觉是状压。 题面 一个软件中有\(n\)个错误,共\(m\)个补丁程序。每一个补丁程序都有其特定的适用环境。对于每一个补丁\(i\)都有\(2\)个与之相应的错误集合\(B1[i]\)和,\(B2[i]\)使得仅当软件包含\(B1[i]\)中的所有错误,而不包含\(B2[i]\)中的任何错误时,才可以使用补丁\(i\)。补丁\(i\)将修复软件中...

weixin_30693183的博客 306

Cesium.Ray 知识详解,示例代码

Cesium.Ray 是 CesiumJS 中用于表示三维空间中无限射线的核心类,广泛应用于地理信息系统(GIS)、三维可视化和碰撞检测等场景。射线由起点(origin)和方向向量(direction)定义,数学表达式为 ( P(t) = \text{origin} + t \times \text{direction} )。核心属性包括起点和方向向量,常用方法包括射线与平面的交点计算、根据距离获取射线上的点等。在 Cesium 中,Cesium.Ray 常用于地形碰撞检测、鼠标点选对象和雷达探测模拟等场景

大剑师兰特的GIS世界 424

学Simulink——基于Simulink的固态变压器(SST)多级协同控制​

本文介绍了基于Simulink的固态变压器(SST)多级协同控制系统设计与仿真方法。SST作为智能电网关键设备,包含AC-DC整流、DC-DC隔离和DC-AC逆变三级变换器。针对级间耦合问题,提出了能量-功率协同控制策略,通过纵向解耦和横向联动实现稳定运行。详细演示了在Simulink中搭建三级主电路、设计协同控制器(含电网定向控制、功率前馈和虚拟惯性控制)的全过程,并通过负载突变测试验证了系统动态性能(直流母线电压波动<2%)。最后给出了工程部署建议,包括数字控制延时补偿、启动序列设计和代码自动生成

xiaoheshang_123的博客 203

[网络流24题]软件补丁问题

分析 裸的最短路: 把错误集合状压成一个二进制,第i为为1表示有第i个错误 把这个状态x作为图上的节点编号,dist[x]表示转移到状态x需要的时间 显然初始状态为dist[\(2^n-1\)]最终的答案为dist[0] 转移的时候枚举每一个补丁,通过位运算判断补丁i是否能修复当前状态 代码 #include<iostream> #include<cstdio> #incl...

weixin_30641999的博客 96

GD32F4xx MCU ADC+DMA 多通道采样

1、GD32F4xx ADC GD32F4xx 的12位ADC是一种采用逐次逼近方式的模拟数字转换器。 1.1 主要特征 可配置12位、10位、8位、6位分辨率; ADC采样率:12位分辨率为2.6MSPs,10位分辨率为3.0 MSPs。分辨率越低,转换越快; PS: MSPs (模拟混合信号转换速率),是指完成1次从模拟转换到数字的AD转换所需的时间的倒数。常用单位是ksps和Msps,表示每秒采样(千)/(百万)次(kilo / Million Samples per Second)。 1msps

madao1234的博客 8117

【网络流24题】软件补丁问题 题解

题目传送门 题目大意: 一开始有一个含有 nnn 个错误的软件,还有 mmm 个补丁,第 iii 个补丁只有当软件包含 B1[i]B1[i]B1[i] 集合中的所有错误以及不包含 B2[i]B2[i]B2[i] 集合中的任何错误才能使用,使用后会将 F1[i]F1[i]F1[i] 集合中的错误消除,并且会加入 F2[i]F2[i]F2[i] 集合中的错误。问将软件修改到无错误最少要用几个补丁。 题...

a_forever_dream的博客 264

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【网络流24题】软件补丁问题

(网络流24题大多需要spj,所以需要一个有spj的oj,本系列代码均在www.oj.swust.edu.cn测试通过) 不知道为什么会有这种奇怪的东西混进我的网络流,但既然出现了就写一下吧,大体思路就是用二进制表示状态,然后每个状态可以转移到另一个状态,求一个最短路即可。 TMD我F1和F2看反了,读题杀真是没救了。#include<cstdio> #include<cstdlib> #in

LZJ209的博客 1116

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

软件补丁问题(网络流24题)

洛谷题目链接:软件补丁问题 题目背景 none! 题目描述 T 公司发现其研制的一个软件中有 n 个错误,随即为该软件发放了一批共 m 个补丁程序。每一个补丁程序都有其特定的适用环境,某个补丁只有在软件中包含某些错误而同时又不包含另一些错误时才可以使用。一个补丁在排除某些错误的同时,往往会加入另一些错误。 换句话说,对于每一个补丁 i,都有 2 个与之相应的错误集合 B1[i]...

dengtun2502的博客 270

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

[网络流24题]软件补丁问题(bfs)

链接 题意:给定n个数,每个数的使用有一定限制,使用这个数后通过异或运算做出贡献,按照一定顺序使用,使全部为1的一个二进制数变为全0 做法: 异或最短路 首先对于一个软件补丁,它的约束和作用可以分别用两个数来表示(有、无),然后由于要达到目的地并且求最大值,很容易想到最短路 Code:(老婆饼中无老婆) #include<bits/stdc++.h> #define N 105 #de...

weixin_30788239的博客 160

网络流24题12. 软件补丁问题

spfa,最短路,位运算

Circus 1024

网络流24题——软件补丁问题

题目链接:https://www.luogu.org/recordnew/show/10501734 【问题分析】 求一个状态到另一个状态变换的最少费用,最短路径问题。 【建模方法】 软件的状态用二进制位表示,第i位为第i个错误是否存在。把每个状态看做一个顶点,一个状态应用一个补丁到达另一状态,连接一条权值为补丁时间的有向边。求从初始状态到目标状态的最短路径即可。 #include &...

GYH0730的博客 322

[网络流24题-3]软件补丁问题

软件补丁问题 “网络流”好题。。。 为啥这个题会出现在网络流24题里呢QAQ我真的按照网络流想的建了一个2^n个点的2^n*n边的图。。。然后一想网络流再怎么跑都跑不出1e6点数1e6边数的非分层图吧。。。弃疗看题解md怎么是状压+最短路qaq 就是状压状态然后dp因为1e6的状态每次转移又有100所以最短路更新就好了。 附代码。 #include&lt;algorithm&gt; #...

寒雨微凝's Blog 469

[网络流24题] 洛谷P2761 软件补丁问题

题意:某公司发现其研制的一个软件中有n个错误,随即为该软件发放了一批共m个补丁程序。对于每一个补丁i,都有2个与之相应的错误集合B1(i)和B2(i),使得仅当软件包含B1(i)中的所有错误,而不包含B2(i)中的任何错误时,才可以使用补丁i。补丁i将修复软件中的某些错误F1(i),而同时加入另一些错误F2(i)。另外,每个补丁都耗费一定的时间。 试设计一个算法,利...

weixin_30438813的博客 127

「网络流24题」 12. 软件补丁问题

「网络流24题」 12. 软件补丁问题 状压 DP,SPFA 转移。 没错,跟网络流没任何关系。 b1、b2、f1、f2 都用二进制存下来,第 i 位表示是否有这个错误。 然后从每位都是 1 到 0 跑一个 SPFA 就好了。 #include <cstdio> #include <cstring> #include <queue> using std:...

weixin_30819163的博客 92
上一篇: BZOJ2428[HAOI2006] 均分数据
下一篇: BZOJ2300[HAOI2011] 防线修建
ShadyPi
博客等级 码龄9年 1万+粉丝 637原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值