博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 658 It's not a Bug, it's a Feature!
阅读量:4114 次
发布时间:2019-05-25

本文共 1141 字,大约阅读时间需要 3 分钟。

题意: 用补丁修订bug,补丁修订bug时有一些要求,其中要求某些bug必须存在,某些bug必须不存在,有的bug任意,在打完补丁之后的状态 有的bug存在,有的消失,有的不变,每个补丁都有执行时间,任务是用最少的时间把一个所有bug都存在的软件通过打补丁的方式变得没有bug。一个补丁可以打多次。

有n(n≤20)个bug,m(≤100)个补丁。

思路:可以把软件拥有bug的状态当成节点,把打补丁的时间当作权值,题目就变成了有向图,题目就转换成求从节点(1<<n-1)到0的最短路径了。因为n小于等于20 这时可以用二进制表示每个bug的存在状态,转换成十进制就成了节点的值,节点的状态共有pow(2,20)种,状态太多,而且有些状态根本遇不到,所以我们不用把所有的状态都找,把图存起来,我们只需要遇到什么状态存什么状态就ok了。

在表示补丁修订bug时的状态,我们要注意保存方式,把必须存在的状态保存下来,不存在的状态保存下来。

#include 
using namespace std;const int maxn=(1<<20)+50;const int inf=0x3f3f3f3f3f;int w[150],a[150][2],b[150][2];int dis[maxn];int vis[maxn];int n,m;void spfa(){ queue
q; memset(vis,0,sizeof(vis)); dis[(1<
dis[u]+w[i]) { dis[v]=dis[u]+w[i]; if(!vis[v]) { q.push(v); vis[v]=1; } } } } } if(dis[0]!=inf) cout<<"Fastest sequence takes "<
<<" seconds."<
>n>>m) { if(m+n==0) break; ka++; cout<<"Product "<
<
>w[i]>>s1>>s2; for(int j=0; j

转载地址:http://ufgsi.baihongyu.com/

你可能感兴趣的文章
《融入动画技术的交互应用》主题博文推荐
查看>>
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day12 集合
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
Day_15JavaSE 异常
查看>>
异常 Java学习Day_15
查看>>
JavaSE_day_03 方法
查看>>
day-03JavaSE_循环
查看>>
Mysql初始化的命令
查看>>
day_21_0817_Mysql
查看>>
day-22 mysql_SQL 结构化查询语言
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
HTML&CSS进阶
查看>>