单路径最大和问题,设f[i][j][S]表示到达(i,j),轮廓线状态为S的最优解. S用4进制m+1位数表示,0表示无插头,1表示左括号,2表示右括号,3表示独立插头. 在DP之前先进行一次预处理,剔除无效状态,并预处理出与每个括号匹配的另一个括号的位置,有效状态只有8000个左右. 然后分类讨论进行转移即可. #include<cstdio> const int N=9,M=8320,inf=-1000000000; int n,m,S,i,j,k,h,z,ans=inf,q[M],id[…