UVA-804 模拟
将每个translation的输入和输出place全部记录下来,模拟即可,当所有translation都不能工作时,就说明dead了。
AC代码:
#include<cstdio>
#include<vector>
using namespace std;
const int maxn = 100 + 5;
struct node{
vector<int> in, out;
}tran[maxn];
int p[maxn]; //the number of tokens in all places
int main(){
int pn, tn, nf, kase = 1;
while(scanf("%d", &pn) == 1 && pn){
for(int i = 1; i <= pn; ++i){
scanf("%d", &p[i]);
}
scanf("%d", &tn);
for(int i = 1; i <= tn; ++i){
int x;
while(scanf("%d", &x) == 1 && x){
if(x < 0) tran[i].in.push_back(-x);
else tran[i].out.push_back(x);
}
}
scanf("%d",&nf);
bool dead = 0;
int h;
for(h = 0; h < nf; ++h){
int cnt = 0;
for(int i = 1; i <= tn; ++i){
bool flag = 1;
vector<int> &in = tran[i].in, &out = tran[i].out;
for(int j = 0; j < in.size(); ++j){
if(p[in[j]] == 0) {
flag = 0;
while(j) p[in[--j]]++; //
break;
}
else p[in[j]]--;
}
if(!flag) ++cnt;
else {
for(int k = 0; k < out.size(); ++k) p[out[k]]++;
break;
}
}
if(cnt == tn) {
dead = 1;
break;
}
}
if(dead) printf("Case %d: dead after %d transitions\n", kase++, h);
else printf("Case %d: still live after %d transitions\n", kase++, nf);
printf("Places with tokens:");
for(int i = 1; i <= pn ; ++i){
if(p[i]) printf(" %d (%d)", i, p[i]);
}
printf("\n\n");
for(int i = 1; i <= tn ; ++i) {
tran[i].in.clear();
tran[i].out.clear();
}
}
return 0;
}
如有不当之处欢迎指出!
UVA-804 模拟的更多相关文章
- UVa 12100 (模拟) Printer Queue
用一个队列模拟,还有一个数组cnt记录9个优先级的任务的数量,每次找到当前最大优先级的任务然后出队,并及时更新cnt数组. #include <iostream> #include < ...
- uva 10205 模拟
模拟题 题目描述挺长的.... #include <cstdio> #include <cstdlib> #include <cmath> #include < ...
- UVa 101 (模拟) The Blocks Problem
题意: 有n个木块及n个木块堆,初始状态是第i个木块在第i个木块堆上.对应有四种操作,然后输出最终状态. 分析: 用一个vector<int>模拟一个木块堆,进行相应操作即可. #incl ...
- Uva - 804 - Petri Net Simulation
Input: petri.in A Petri net is a computational model used to illustrate concurrent activity. Each Pe ...
- 【每日一题】Flooded! UVA - 815 模拟阅读格式题
https://cn.vjudge.net/problem/UVA-815 题意:给你一个矩阵,每个格子的数代表一个海拔并且每个格子的面积100平方米.给你整个区域的降水量(立方米),问降水量(米). ...
- UVA大模拟代码(白书训练计划1)UVA 401,10010,10361,537,409,10878,10815,644,10115,424,10106,465,10494
白书一:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=64609#overview 注意UVA没有PE之类的,如果PE了显示WA. UVA ...
- 【习题 6-7 UVA - 804】Petri Net Simulation
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟就好 [代码] /* 1.Shoud it use long long ? 2.Have you ever test sever ...
- 【紫书】 Unix ls UVA - 400 模拟
题意:中文版https://vjudge.net/problem/UVA-400#author=Zsc1615925460 题解:首先读取字符,维护一个最长字符串长度M,再排序. 对于输出,写一个pr ...
- UVA - 11995 模拟
#include<iostream> #include<cstdio> #include<algorithm> #include<cstdlib> #i ...
- Paper Folding UVA - 177 模拟+思路+找规律
题目:题目链接 思路:1到4是很容易写出来的,我们先考虑这四种情况的绘制顺序 1:ru 2:rulu 3:rululdlu 4:rululdluldrdldlu 不难发现,相较于前一行,每一次增加一倍 ...
随机推荐
- java1.8--改进的接口
关于接口,每天的编码都在写,就不多说了.这里对比下接口,抽象类,类3者的关系: 1),接口是一种规范,就是告诉外界这个东东可以做什么. 2),抽象类是一种模板,就是告诉外界这个东西的一部分公共功能. ...
- java 常见的几种运行时异常RuntimeException
常见的几种如下: NullPointerException - 空指针引用异常ClassCastException - 类型强制转换异常.IllegalArgumentException - 传递 ...
- UUID.randomUUID().toString()
UUID.randomUUID().toString()是javaJDK提供的一个自动生成主键的方法.UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机 ...
- 无法远程连接SQLSERVER2000的解决方法
有时候客户端和服务器不在同一个局域网里面,这时候很可能无法直接使用服务器名称来标识该服务器,这时候我们可以使用HOSTS文件来进行名字解析,具体的方法是: 1.使用记事本打开HOSTS文件(一般情况下 ...
- 【转】 awk 学习笔记
本文参考的是 ubuntu 下 gawk version 3.1.6 以及 <sed&awk> 一 . awk 简介 awk 是一种解释型(tawk除外)文本处理语言 二 . aw ...
- win10 store 无法连接网络
当你试过所有的解决攻略 都无效时,那么使用这个教程 关闭以下的蓝色框里的
- 在windows环境下更改某软件的窗口位置
#include<stdio.h>#include <stdlib.h>#include <Windows.h>#include <time.h> vo ...
- Spring Boot快速入门(最新)
本章通过完成Spring Boot基础项目的构建并实现一个简单的Http请求处理,让大家对Spring Boot有一个初步的了解,并体验其结构简单.开发快速的特性.预计阅读及演练过程将花费约5分钟. ...
- BZOJ 3624: [Apio2008]免费道路 [生成树 并查集]
题意: 一张图0,1两种边,构造一个恰有k条0边的生成树 优先选择1边构造生成树,看看0边是否小于k 然后保留这些0边,补齐k条,再加1边一定能构成生成树 类似kruskal的证明 #include ...
- POJ1509 Glass Beads [后缀自动机]
题意: 给一个字符串S,每次可以将它的第一个字符移到最后面,求这样能得到的字典序最小的字符串.输出开始下标 练习SAM第一题! SS构造SAM,然后从开始尽量走最小走n步就可以啦 什么?开始位置?!R ...