UVA804 Petri网模拟 Petri Net Simulation
知识点:模拟
这道题就是个语文题,和数据结构算法啥的都不占边,暴力模拟就行了,而且还是感觉刘汝佳的翻译不是很明白,我是上网上搜了题意,然后直接以变迁作为下标来模拟就行了,
题目翻译:UVA 804 Petri Net Simulation(算法竞赛入门经典,模拟)
#include <bits/stdc++.h>#define fi first
#define se second
#define pb push_back
#define mk make_pair
#define sz(x) ((int) (x).size())
#define all(x) (x).begin(), (x).end()using namespace std;typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pa;const int N = 105;int main() {int np;int num = 1;while (cin >> np && np) {int rec[N];for (int i = 1; i <= np; i++) cin >> rec[i];int nt;cin >> nt;vector<pa> pre[N];vector<pa> nxt[N];for (int i = 1; i <= nt; i++) {int x;while (cin >> x && x) {int ok = 0;if (x < 0) {for (int j = 0; j < sz(pre[i]); j++) {if (pre[i][j].fi == x * -1) { pre[i][j].se++; ok = 1; }}if (!ok) pre[i].pb(mk(x * -1, 1));} else {for (int j = 0; j < sz(nxt[i]); j++) {if (nxt[i][j].fi == x) { nxt[i][j].se++; ok = 1; }}if (!ok) nxt[i].pb(mk(x, 1));}}}int q;cin >> q;int i;for (i = 1; i <= q; i++) {int ok = 0;for (int j = 1; j <= nt; j++) {int ook = 1;for (int k = 0; k < sz(pre[j]); k++) {if (pre[j][k].se > rec[pre[j][k].fi]) ook = 0;}if (ook) {for (int k = 0; k < sz(pre[j]); k++) rec[pre[j][k].fi] -= pre[j][k].se;for (int k = 0; k < sz(nxt[j]); k++) rec[nxt[j][k].fi] += nxt[j][k].se;ok = 1;break;}}if (!ok) break;}cout << "Case " << num++ << ":";if (i == q + 1) cout << " still live after " << q << " transitions\n";else cout << " dead after " << i - 1 << " transitions\n";cout << "Places with tokens:";for (int i = 1; i <= np; i++) {if (rec[i]) cout << ' ' << i << " (" << rec[i] << ")";}cout << endl << endl;}return 0;
}
UVA804 Petri网模拟 Petri Net Simulation相关推荐
- 常用Petri网模拟软件工具简介
常用Petri网模拟软件工具简介 首先要介绍的的一个非常有名的Petri 网网站--Petri Nets World: http://www.informatik.uni-hamburg.de/TGI ...
- 很久以前某位大仙对petri网的总结
2006年03月14日 计算模型的统一分析 计算模型的统一分析 人类所有的计算模型都包括如下四个要素: 1)输入集合或者输入变量(I): 2)输出集合或者输出变量( ...
- 基于 Petri 网的软件过程支撑环境设计
基于 Petri 网的软件过程支撑环境设计 基于 Petri 网的软件过程支撑环境设计 摘要 第 1 章 绪论 1.1 软件过程与过程建模 1.3 软件过程支撑环境现状 1.3 本课题的研究内容及意义 ...
- 关于Petri网的学习笔记
讲述我对Petri的学习过程. 着色Petri网(Color Petri Net) 1.使用有颜色的Token(类型) 使用有颜色的Token 可以对Token进行分类,同时对库所也要定义Token的 ...
- petri网学习笔记--stochastic petri net分类
SPN 给P/T网的每个transition关联一个实施速率(firing rate)而得到的模型 GSPN Generalized stochastic petri nets,广义随机Petri网 ...
- 如何使用petri网建模工具
Petri网建模工具是一种建立和分析Petri网模型的软件工具,以下是使用Petri网建模工具的一般步骤: 下载并安装Petri网建模工具,比较常用的Petri网建模工具有PIPE.TAPAAL等,可 ...
- 如何使用petri网建模工具pipe4.3.0
Petri网建模工具PIPE4.3.0是一个用于Petri网建模的软件工具.以下是使用PIPE4.3.0建模的基本步骤: 下载和安装PIPE4.3.0软件,并启动它. 创建一个新的Petri网模型.您 ...
- 离散事件动态系统 #Petri网作业 #可达图 #赋时Petri
离散事件动态系统作业 #Petri网 #可达图 #赋时Petri 本文章由作者独立创作,为研究生某课程作业,仅供参考 首先吐槽一点:CSDN无法使用svg矢量图(人家写markdown都支持) 1. ...
- Petri网描述语言
PNML--Petri Net Markup Language PNML是基于XML的Petri网表示方法.为了支持不同类型的petri网,其中允许定义新的petri网类型.由于具有这种灵活性,PNM ...
最新文章
- 计算机用户名更改不了,简单几步解决win10电脑用户名改不了的问题
- boost源码剖析之:泛型指针类any之海纳百川(rev#2)
- Angular项目中,基于esriLoader+iframe实现不同页面调用3.x与4.x ArcGIS JS API
- centos7 apache2.4 测试
- 用Gson实现json与对象、list集合之间的相互转化
- SOAP协议 访问Webservice
- apache mesos_在Twitter上使用Apache Mesos和Apache Aurora进行资源调度和任务启动
- Redis 管道技术——Pipeline
- python步态识别算法_译 | GaitSet:将步态作为序列的交叉视角步态识别(一)
- 上传文件到服务器端后进一步推送到sftp服务器
- Ubuntu-创建wifi热点-Android能连接(2)
- python所有软件-一款Python黑客打造的勒索软件,让所有国产杀毒软件升起无力感!...
- 怎样快速的学习微信小程序
- 微信登录界面安卓代码_安卓Activity劫持与反劫持
- active控件和java脚本_Active控件问题小结(附解决办法)
- Calendar获取上个月第一天和最后一天,上周第一天和最后一天
- Reentrantlock和背后金主AQS —————— 开开开山怪
- Ros同一局域网下多机通信
- 2022年行研行业研究报告
- 关于Mac系统接完投影仪拔下来以后有黑框的问题解决办法