题目网址:https://www.luogu.com.cn/problem/P1063 题意大致是:给定一个序列An,第i个元组表示为(Ai,Ai+1),序列位置不变,当合并一个区间[l,l+1]时开销是Al*Al+1*Al+2,问合并整个序列的最大开销.一看就是区间dp,顺便借助记忆化减少搜索的冗余.题目中的项链是环状的,可以通过拼接相同的序列在元序列之后构造出一条链状的序列.这个问题与矩阵链相乘有点相似.代码如下: #include<bits/stdc++.h> using namespa…
常规线性dp,需要时就加一维.\(dp[i][j][t][s]\)表示在点\((i,j)\)时瓶子里剩\(t\)且为\(s\)走(0代表小a,1代表uim)时的方案数. de了半天发现是初次尝试的快速取模少写个等号--然鹅改了以后为什么比正常写跑得慢-- #include <cstdio> const int mod = 1e9 + 7; int n, m, k, ans; int a[805][805], dp[805][805][20][2]; void add(int &x, i…