当前位置: 首页 > news >正文

php 网站建设 教学腾讯企业邮箱域名格式

php 网站建设 教学,腾讯企业邮箱域名格式,wordpress软文文件,营销软文怎么写题意 给出一个包含n个bug的应用程序,以及m个补丁,每个补丁使用两个字符串表示,第一个串表示补丁针对bug的情况,即哪些bug存在,以及哪些bug不存在,第二个串表示补丁对bug的修复情况,即修复了哪些…

题意

给出一个包含n个bug的应用程序,以及m个补丁,每个补丁使用两个字符串表示,第一个串表示补丁针对bug的情况,即哪些bug存在,以及哪些bug不存在,第二个串表示补丁对bug的修复情况,即修复了哪些bug,以及引入哪些bug。补丁还包含修复的时间。问修复这些bug所需要的最短时间

思路

使用Dijkstra算法,使用n表示bug数,bug数限制在20内,初始n个bug全存在,即源点为1<<n-1,在从优先级队列中取出最短时间节点时,遍历补丁,根据当前补丁的情况以及修复情况来展开新的节点,同时将新节点放入优先级队列中,最后看目标点为0时的距离

代码

#include <bits/stdc++.h>using namespace std;#define _for(i, a, b) for(int i = (a); i < (b); i++)
#define _rep(i, a, b) for (int i = (a); i <= (b); i++)struct Edge
{int from, to, dist;
};struct HeapNode
{int u, d;bool operator<(const HeapNode& other) const{return d > other.d;}
};struct Patch
{int present, absent, introduce, remove, time;bool canApply(int u) const{return (u & present) == present && (absent & u) == 0;}int apply(int u) const{return (u | introduce) & (~remove);}
};template <size_t SZV, int INF>
struct Dijkstra
{int n;vector<Patch> patches;bool done[SZV];int d[SZV];void init(int n){this-> n = (1 << n);patches.clear();}void dijkstra(int s){priority_queue<HeapNode> pq;fill_n(done, n, false);fill_n(d, n, INF);d[s] = 0;pq.push({s, 0});while (!pq.empty()) {HeapNode curNode = pq.top();pq.pop();int u = curNode.u;if (done[u]) {continue;}done[u] = true;_for(i, 0, patches.size()) {const Patch& p = patches[i];if (!p.canApply(u)) {continue;}int v = p.apply(u);if (d[v] > d[u] + p.time) {d[v] = d[u] + p.time;pq.push({v, d[v]});}}}}
};void fastio()
{ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
}const int MAXN = 20;
const int MAXV = (1 << MAXN) + 4;
const int INF = 1e9;int n, m;void toInt(const string& s, int& i1, int& i2)
{i1 = i2 = 0;_for(i, 0, n) {if (s[i] == '+') {i1 |= (1 << i);}if (s[i] == '-') {i2 |= (1 << i);}}
}Dijkstra<MAXV, INF> solver;int main()
{fastio();#ifndef ONLINE_JUDGEifstream fin("f:\\OJ\\uva_in.txt");streambuf* back = cin.rdbuf(fin.rdbuf());#endifint kase = 1;while (cin >> n >> m) {if (n == 0 && m == 0) {break;}//cout << "n:" << n << " m:" << m << endl;solver.init(n);string buf1, buf2;Patch patch;_for(i, 0, m) {cin >> patch.time >> buf1 >> buf2;toInt(buf1, patch.present, patch.absent);toInt(buf2, patch.introduce, patch.remove);solver.patches.push_back(patch);}/*for (int i = 0; i < solver.patches.size(); i++) {const Patch& patch = solver.patches[i];cout << patch.present << " " << patch.absent << " " << patch.introduce << " " << patch.remove << endl;}*/solver.dijkstra(solver.n - 1);cout << "Product " << kase++ << endl;if (solver.d[0] == INF) {cout << "Bugs cannot be fixed." << endl;} else {cout << "Fastest sequence takes " << solver.d[0] << " seconds." << endl;}cout << endl;}#ifndef ONLINE_JUDGEcin.rdbuf(back);#endifreturn 0;
}

注意

因为在代码中初始节点数为1<<20-1,如果直接在栈上即main函数中创建Dijkstra类,由于栈空间限制,会出错,所以需要设置为全局变量

http://www.yayakq.cn/news/89084/

相关文章:

  • 可以在线制作网页的网站微网站开发提供的服务器
  • 天津市住房和城乡建设厅网站网站建设3a模型是什么
  • 如何注册一个自己的网站免费网站建设垂询186 6159 6345
  • 建设一个网站的硬件要求怎么做电影网站不违法
  • 招商门户网站建设方案校园网站建设必要性
  • 崇信县网站留言卫浴网站怎么做
  • 网站服务器一年的费用如何做社群营销模式
  • 石家庄建站系统俄文网站开发
  • 河南网站优化排名天眼查官方网站
  • 西安网站建设电话美食推广平台有哪些
  • 石家庄网站快速备案工商所什么网站可做年报
  • 公司网站怎么规范管理的如何更改 网站 关键词
  • 网站分为哪些部分求好用的seo软件
  • 网站专题制作教程今天济南刚刚发生的新闻
  • html5网站正在建设中虚拟主机WordPress镜像下载
  • 网站优化外包服务上海活动策划公司排行榜
  • 湘潭网站建设优化技术长春网站制作顾问
  • 伴奏在线制作网站开发公司质量管理制度
  • 江西移动网站天辰建设网
  • php网站服务器怎么来软件项目过程
  • 高质量外链长沙seo搜索
  • 哪个网站的旅游板块做的好建设网站的制作步骤
  • 上海网站建设价位wordpress 多人编辑器
  • 外贸网站免费建站网页使用怎么做
  • 做一个企业网站大概需要多少钱吉林seo基础知识
  • 网站建设到哪个店做北京写字楼装修公司
  • 旅游外贸网站建设推广wordpress 应用店商
  • 柳州企业网站开发平台手机查询wordpress分类id
  • 做网站张家口做网站费用记入什么会计科目
  • 中科院网站建设江苏省公路与水路建设网站