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

网站广告推广平台电子商务网站推广方法

网站广告推广平台,电子商务网站推广方法,融媒体网络营销是什么,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/413741/

相关文章:

  • 投资集团网站建设动态图片制作
  • 厦门定制型网站建设wordpress源代码插件
  • 装修设计装饰公司石家庄seo推广
  • 网站建设未来趋势好的平面设计灵感网站
  • 素材网站的图可以做海报吗百度seo推广免费
  • 网站建设与管理的网页免费html5播放器
  • asp网站 手机登录页面设计文献
  • 陕西建设厅网站首页wordpress全站转移
  • 温州新公司做网站投百度做广告效果怎么样
  • seo公司网站推广2013影响网站百度搜索排名关键因素统计
  • 外销网站有哪些wordpress登录缓存
  • 什么网站可以做miR的差异表达图什么网站做网页好
  • 杭州临平网站建设小学网站建设
  • 自己动手做网站怎样创建个人销售网站
  • 棋牌游戏网站开发wordpress网站主修改
  • 自己做的网站怎么排名嘉兴seo外包
  • 多个网站做计划医院网站站群建设
  • 开发网站可用性监控神华集团 两学一做 网站
  • 商城网站网站开发镇江教育云平台网站建设
  • 网站运营经理岗位要求wap浏览器手机版
  • 湖州网站做等保费用上海搜索seo
  • 电子商务网站建设步骤有什么wordpress工作室模版
  • 公司如何建立微网站做网站联系我们在那个板块里面
  • 西宁网站运营公司wordpress下单系统
  • 自己编程做网站深圳设计网站有限公司
  • vs2010网站建设有哪些摄影网站
  • 美丽南方的网站建设校园网站建设的意义
  • 个人备案网站做什么个人网站前置审批项
  • spring mvc 做网站有经验的郑州网站建设
  • 怎样用百度做网站优化怎么用wordpress写文章