https://vjudge.net/problem/UVALive-6892

题意:

给出n个数字和n个符号(+,-,*和?),?可以为+,-,*中任意一个,现在要计算出这个式子的最小值和最大值,并且运算顺序随意,也就是可以随便加括号。之后进行旋转之后继续计算。比如一开始给的是1 ? 5 + 0 ? -2 - -3 *,那么旋转之后就是上面的第二行了,这样一共需要旋转n次,也就是说要计算n次。

思路:
运算顺序随意,有没有感觉很像矩阵连乘?

这道题目就是升级版的矩阵连乘吧。

因为是可以旋转的,那么就在后面再加一行变成线性。

之后就和矩阵连乘的做法差不多了,用两个数组来保存,一个保存最大值,另一个最小值即可。

 #include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<sstream>
#include<vector>
#include<stack>
#include<queue>
#include<cmath>
#include<map>
using namespace std;
typedef long long ll;
typedef pair<int,long long> pll;
const ll INF = 1LL<<;
const int maxn=+; int n;
ll f[maxn][maxn];
ll g[maxn][maxn];
char op[maxn]; int main()
{
//freopen("input.txt","r",stdin);
while(~scanf("%d",&n))
{
for(int i=;i<=*n;i++)
for(int j=;j<=*n;j++)
{
f[i][j]=-INF;
g[i][j]=INF;
} for(int i=;i<=n;i++)
{
scanf("%lld %c",&f[i][i],&op[i]);
f[n+i][n+i]=f[i][i];
g[i][i]=g[n+i][n+i]=f[i][i];
op[n+i]=op[i];
} for(int r=;r<=n;r++)
{
for(int i=;i<=*n-r+;i++)
{
int j=i+r-;
for(int k=i;k<j;k++)
{
if(op[k]=='+'||op[k]=='?')
{
f[i][j]=max(f[i][j],f[i][k]+f[k+][j]);
g[i][j]=min(g[i][j],g[i][k]+g[k+][j]);
} if(op[k]=='-'||op[k]=='?')
{
f[i][j]=max(f[i][j],f[i][k]-g[k+][j]);
g[i][j]=min(g[i][j],g[i][k]-f[k+][j]);
} if(op[k]=='*'||op[k]=='?')
{
f[i][j]=max(f[i][j],f[i][k]*f[k+][j]);
f[i][j]=max(f[i][j],g[i][k]*g[k+][j]);
f[i][j]=max(f[i][j],f[i][k]*g[k+][j]);
f[i][j]=max(f[i][j],g[i][k]*f[k+][j]); g[i][j]=min(g[i][j],f[i][k]*f[k+][j]);
g[i][j]=min(g[i][j],g[i][k]*g[k+][j]);
g[i][j]=min(g[i][j],f[i][k]*g[k+][j]);
g[i][j]=min(g[i][j],g[i][k]*f[k+][j]);
}
}
}
}
for(int i=;i<=n;i++)
{
printf("%lld%lld",abs(g[i][i+n-]),abs(f[i][i+n-]));
}
printf("\n");
}
return ;
}

LA 6892 The Safe Secret(矩阵连乘)的更多相关文章

  1. Unity 捏脸整理及基于骨骼的捏脸功能实现

    目前实现捏脸功能的方式主要有两种.一个是Blendshape(融合变形),一个是基于骨骼驱动的方式,通过修改骨骼矩阵(bindpose)来影响SkinMesh.这两种方式的最终原理都是在shader ...

  2. 用Python调用阿里云的短信接口

    #!/usr/bin/env python# -*- coding:utf-8 -*-# Author:Frank import uuidimport datetimeimport hmacimpor ...

  3. 骨骼动画的原理及在Unity中的使用

    制作骨骼动画 我们看看这几步操作后,我们得到了那些数据: 1.每个皮肤顶点的初始世界坐标. 2.每个骨骼关节顶点的初始世界坐标. 3.每个顶点被骨骼顶点的影响信息. 4.骨骼如何移动. 骨骼动画原理 ...

  4. python3调用阿里云短信服务

    #!/usr/bin/env python#-*- coding:utf-8 -*-#Author:lzd import uuidimport datetimeimport hmacimport ba ...

  5. LA 3704 (矩阵快速幂 循环矩阵) Cellular Automaton

    将这n个格子看做一个向量,每次操作都是一次线性组合,即vn+1 = Avn,所求答案为Akv0 A是一个n*n的矩阵,比如当n=5,d=1的时候: 不难发现,A是个循环矩阵,也就是将某一行所有元素统一 ...

  6. LA 6893 矩阵HASH (模板)

    #include<stdio.h> #include<string.h> typedef unsigned long long ULL; ; ; int test,n,m,x, ...

  7. LA 6893 The Big Painting(矩阵Hash)

    https://vjudge.net/problem/UVALive-6893 题意: 给出一个小矩阵和大矩阵,在大矩阵中能找到相同的小矩阵. 思路: 矩阵Hash,先对小矩阵计算出它的Hash值,然 ...

  8. UVA - 12183 :Top Secret(N^2的循环矩阵乘法)

    pro:N个数排成一圈.一次操作为,每个位置的数+=L*左+R*右,保留x为整数. 问S轮操作后每个位置的值. N<=1000,S<=2^30,x<=9 . sol:不难想到矩阵乘法 ...

  9. LA 3704细胞自动机——循环矩阵&&矩阵快速幂

    题目 一个细胞自动机包含 $n$ 个格子,每个格子的取值为 $0 \sim m-1$.给定距离 $d$,则每次操作是将每个格子的值变为到它的距离不超过 $d$ 的所有格子的在操作之前的值的和除以 $m ...

随机推荐

  1. 1296: [SCOI2009]粉刷匠[多重dp]

    1296: [SCOI2009]粉刷匠 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1919  Solved: 1099[Submit][Statu ...

  2. [IIS] IIS Framework "aspnet_regiis.exe" 注册

    Error:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“

  3. Unity3D笔记九 发送广播与消息、利用脚本控制游戏

    一.发送广播与消息 游戏对象之间发送的广播与消息分为三种:第一种向子对象发送,将发送至该对象的同辈对象或者子孙对象中:第二种为给自己发送,发送至自己本身对象:第三种为向父对象发送,发送至该对象的同辈或 ...

  4. linux防火墙iptables

    2.1 框架图 -->PREROUTING-->[ROUTE]-->FORWARD-->POSTROUTING--> mangle | mangle ^ mangle n ...

  5. 洛谷P1156 垃圾陷阱 dp

    正解:dp 解题报告: 这儿是传送门! 话说最近怎么神仙们都开始狂刷dp,,,感觉今天写了好多dp的题解的样子?(也就三四道其实× 然后这题,首先看到要么吃要么堆起来就会想到01背包趴?然后就考虑设方 ...

  6. logger类

    日志模块logging的四大组件: logger: 志类应用程序往往通调用提供api记录志handler: 志信息处理志发送(保存)同目标域filter: 志信息进行滤formatter:志格式化 L ...

  7. Log表新的RowKey设计,预Split

    1 目前Rawlog表的问题 region数量庞大,空region 率大 共有12791个region 11409空region, 比例为89.19% 剩余的region大小也是极度不均衡,最大的re ...

  8. 离线状态 Postman不能开启Postman Interceptor解决

    目前的postman插件如果想正常使用,必须安装Postman Interceptor插件,这样才能直接使用chrome浏览器的cookie等信息,否则postman是无法完成老版本的功能的. 直接使 ...

  9. zcash 的资料

    我的比特币使用的是 electrum 2.9.3 版本.我的zcash用的是 jaxx 1.2 版. zcash又叫zec,可以在 bithumb (韩国的) 平台上进行交易zcash. zcash ...

  10. ajax请求,html调用js

    1:html中调用js中的函数,js使用ajax请求向后台请求,返回数据. <!DOCTYPE html> <html lang="en"> <hea ...