FZU 1061 矩阵连乘
用栈来算一算就可以了。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<map>
using namespace std; struct Mar
{
int r,c;
} mar[];
int n;
char s[];
int r,c,top,flag;
Mar Stack[]; int main()
{
while(~scanf("%d",&n))
{
for(int i=; i<n; i++)
{
scanf("%s%d%d",s,&r,&c);
mar[s[]-'A'].r=r;
mar[s[]-'A'].c=c;
}
scanf("%s",s); int len=strlen(s);
flag=;
top=-;
for(int i=; i<len; i++)
{
if(top==-)
{
top++;
if(s[i]>='A'&&s[i]<='Z')
Stack[top]=mar[s[i]-'A'];
else
{
Mar node;
node.c=-;
node.r=-;
Stack[top]=node;
}
continue;
}
if(s[i]=='(')
{
Mar node;
node.c=-;
node.r=-;
top++;
Stack[top]=node;
}
else if(s[i]==')')
{
top--;
Stack[top]=Stack[top+];
if(top-!=-&&Stack[top-].c!=-&&Stack[top-].r!=-)
{
if(Stack[top-].c!=Stack[top].r)
{
flag=-;
break;
}
else
{
flag=flag+Stack[top-].c*Stack[top-].r*Stack[top].c;
Stack[top-].c=Stack[top].c;
top--;
}
}
}
else
{
Mar node;
node.c=mar[s[i]-'A'].c;
node.r=mar[s[i]-'A'].r;
top++;
Stack[top]=node;
if(Stack[top-].r!=-&&Stack[top-].c!=-)
{
if(Stack[top-].c!=Stack[top].r)
{
flag=-;
break;
}
else
{
flag=flag+Stack[top-].c*Stack[top-].r*Stack[top].c;
Stack[top-].c=Stack[top].c;
top--;
}
}
}
}
if(flag==-) printf("error\n");
else printf("%d\n",flag);
}
return ;
}
FZU 1061 矩阵连乘的更多相关文章
- fzu 1911 Construct a Matrix(矩阵快速幂+规律)
题目链接:fzu 1911 Construct a Matrix 题目大意:给出n和m,f[i]为斐波那契数列,s[i]为斐波那契数列前i项的和.r = s[n] % m.构造一个r * r的矩阵,只 ...
- FZU 1683 纪念SlingShot(矩阵水)
纪念SlingShot [题目链接]纪念SlingShot [题目类型]矩阵水 &题解: 这代码调了十多分钟,结果是Mul没返回值,好zz啊. 令sum(n)=sum(n-1)+f(n) 那么 ...
- FZU 1692 Key problem( 循环矩阵优化 + 矩阵快速幂)
链接:传送门 题意: n个小朋友围成一个环( 2 <= n <= 100 )然后进行m次的游戏. 一开始,第 i 个小朋友有 Ai 个苹果. 定义游戏的规则为:每一次游戏处于 i 位置的小 ...
- fzu 2173 floyd+矩阵快速幂
#include<stdio.h> #define inf 1000000000000000 #define N 100 long long tmp[N][N],ma[N][N]; int ...
- FZU 2187 回家种地 ( 扫描线 + 离散 求矩阵单次覆盖面积 )
2187 回家种地 Accept: 56 Submit: 230Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Descript ...
- BZOJ 1061: [Noi2008]志愿者招募 [单纯形法]【学习笔记】
1061: [Noi2008]志愿者招募 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 3975 Solved: 2421[Submit][Stat ...
- (算是dp吧) 小茗的魔法阵 (fzu 2225)
http://acm.fzu.edu.cn/problem.php?pid=2225 Problem Description 在打败了易基•普罗布朗.诺姆•普罗布朗之后,小茗同学开始挑战哈德•普罗 ...
- (并查集)~APTX4869(fzu 2233)
http://acm.fzu.edu.cn/problem.php?pid=2233 Problem Description 为了帮助柯南回到一米七四,阿笠博士夜以继日地研究APTX4869的解药.他 ...
- fibonacci封闭公式及矩阵连乘
Description The Fibonacci sequence is the sequence of numbers such that every element is equal to th ...
随机推荐
- AI 人工智能 探索 (七)
我简单画了一幅图,来讲下 ai 中的设计模式.图形中的这些人物,我想大家都能看的明白. 当 盗贼出现,人们发现了他们,就 呼叫 主类,然后主类再 通知 下面对应的管理局,然后管理局再 分配人手过去 ...
- Problem A
Problem A Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Sub ...
- java 类与对象
class XiyoujiRenwu { float height,weight; String head, ear; void speak(String s) { System.out.printl ...
- 每个黑客黑客的目标是让目标系统做你不想做的事情。 一个主要的例子是显示敏感文件,如/ etc / passwd和/ etc / shadow(存储用户的用户名和加密密码)。一旦这些文件在他或她的手中,就可以使用“字典“攻击的密码。 或者,他们可以使您的系统FTP受感染的文件,并运行它,这可能是坏或坏。为了做到这一点,他们需要得到一个“可信”的程序来执行他们指定的命令。通常,这是通过“缓冲区
因此,本质上,程序正在读取文本行,解释它们,并基于它们执行操作.这些"网络守护进程"利用的一个方便的特征是它们可以使用"标准输入"和"标准输出&quo ...
- R语言——绘图函数深入学习
利用R自带数据集 通过data()函数可以查看R自带数据集. > data() 返回以下结果,每一条记录都是一个数据,键入相应的数据名称可以查看具体信息. Data sets in packag ...
- windbg 之 如何设置模块加载时断下
这里先介绍两个指令: sx指令: The sx* commands control the action that the debugger takes when an exception occur ...
- UAC绕过思路(未完)
---恢复内容开始--- What is UAC?
- Windows查看端口被哪个进程占用
命令 查看PID: netstat -ano|findstr 端口号 查看进程名称: tasklist|findstr PID 结束进程: taskkill -F -PID PID号 配图详解: 1. ...
- C++读取excel特定行列中的数据
可以通过COM API调用才是正解,不过需要编写COM接口类,Excel对象库的接口太多了……不过可以用工具自动生成. 我最近也在用VC操作Excel,在VC中可以这样做,在任何一个cpp文件中加入下 ...
- nginx及php版本号隐藏
配置完一台服务器后,并不是就可以高枕无忧了,前不久刚刚爆发的PHP 5.3.9版本的漏洞也搞得人心惶惶,所以说经常关注安全公告并及时升级服务器也是必要的.一般来说,黑客攻击服务器的首要步骤就是收集信息 ...