mirror of
https://gitcode.com/Zengtudor/alg2025.git
synced 2025-09-05 17:50:36 +00:00
67 lines
1.5 KiB
C++
67 lines
1.5 KiB
C++
/*
|
|
|
|
dpmax[i][j]=编号[i,j]合并后的最大值
|
|
dpmin[i][j]=编号[i,j]合并后的最小值
|
|
|
|
if op[k] == +
|
|
dpmax[i][j]=max(dpmax[i][k]+dpmax[k+1][j])
|
|
dpmin[i][j]=min(dpmin[i][k]+dpmin[k+1][j])
|
|
|
|
else if op[k] == *
|
|
dpmax[i][j]=max(dpmax[i][k]*dpmax[k+1][j],
|
|
dpmax[i][k]*dpmin[k+1][j],
|
|
dpmin[i][k]*dpmax[k+1][j],
|
|
dpmin[i][k]*dpmin[k+1][j])
|
|
|
|
dpmin[i][j]=min(dpmax[i][k]*dpmax[k+1][j],
|
|
dpmax[i][k]*dpmin[k+1][j],
|
|
dpmin[i][k]*dpmax[k+1][j],
|
|
dpmin[i][k]*dpmin[k+1][j])
|
|
|
|
dpmax[i][j] = -1e9
|
|
dpmin[i][j] = 1e9
|
|
|
|
dp[i][i]=arr[i]
|
|
|
|
*/
|
|
#include <cstdint>
|
|
#include <iostream>
|
|
#include <istream>
|
|
#include <vector>
|
|
using ll = int64_t;
|
|
|
|
int main(){
|
|
std::iostream::sync_with_stdio(false);
|
|
std::cin.tie(nullptr);
|
|
|
|
ll n;
|
|
std::cin>>n;
|
|
const ll add=0,mul=1;
|
|
const ll n21=2*n+1;
|
|
std::vector<std::vector<ll>> op(n*2+1,std::vector<ll>(2));
|
|
for(ll i=1;i<=n;i++){
|
|
char c;
|
|
std::cin>>c;
|
|
if(c=='t'){
|
|
op[i][0]=add;
|
|
}else{
|
|
op[i][0]=mul;
|
|
}
|
|
std::cin>>op[i][1];
|
|
op[i+n]=op[i];
|
|
}
|
|
std::vector<std::vector<ll>> dpmax,dpmin;
|
|
for(ll s=1;s<n;s++){
|
|
ll e = s+n-1;
|
|
dpmax.clear();
|
|
dpmax.resize(n21,std::vector<ll>(n21,-1e9));
|
|
dpmin.clear();
|
|
dpmin.resize(n21,std::vector<ll>(n21,1e9));
|
|
for(ll i=s;i<=e;i++){
|
|
dpmax[i][i]=op[i][1];
|
|
}
|
|
for(ll i=s;i<=e;i++){
|
|
|
|
}
|
|
}
|
|
} |