UVA 804 Petri Net Simulation(算法竞赛入门经典,模拟)

这篇博客介绍了算法竞赛入门经典中的第177页内容,聚焦于UVA 804 Petri Net Simulation问题。文章通过详细解释题目含义,强调理解发射站和节点间的关系以及令牌(token)机制。关键在于理解发射站能否点火发射取决于所有节点的令牌是否充足,以及点火后令牌如何转移。博主建议通过绘制图表和模拟样例来深入理解问题的本质,将其视为一道语文题而非纯数学题。
摘要由CSDN通过智能技术生成

算法竞赛入门经典177页,模拟
题目意思:
np个节点 p[1], p[2], … , p[np], 每个节点有若干个牌子 token, 节点与节点之间不直接联系,中间间隔了
一个叫 发射站 trans 的玩意。每一节点向外只能指向一个 发射站。并且,一个节点指向同一个发射站若干次,节点就需要若干个 token 。
发射站也是不能直接相连,
多个节点,可以同时指向一个发射站;
每一个发射站,可能指向若干个 节点。
一个发射站,是否能点火发射,主要看看这个发射站 Trans ,指向 Trans 的每一个节点,节点手中的牌子 token 是否足够。
只有所有的节点的 token 都足够,这个发射站才能点火。
点火之后,指向 发射站 Trans 的所有节点,会减少对应的 token ,而 发射站 Trans 指出的 节点, 这些节点的token 会增加对应的
token. 题目问:进过若干次点火,要么到达循环次数,要么就没有足够的 token 来点火。
此时,每一节点拥有的token数。

本题要点:
1、看懂题目意思,知道样例, 然后暴力模拟。
2、把题目的图画下来,走一下样例就知道了。本质是一道语文题。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <vector>
using namespace std;
const int MaxN = 110;
int np, nt, cycle;
int pos[MaxN];	//pos[i]表示第i个 NP 的 token数量
int In[MaxN], Out[MaxN];

struct node
{
   
	int id, token;
};

struct NT
{
   
	vector<node> in, out;
}trans[MaxN];

bool check(int k)
{
   
	int len = trans[k].in.size(), token, id;
	for(int i = 0; i < len; ++i)
	{
   
		token = trans[k].in[i].token, id = trans[k].in[i]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值