谷歌amp wordpress,沈阳网站优化推广方案,广西建设中心培训网站,温州网站建设咨询正题 题目大意
有n个瓶子#xff0c;将一个瓶子变成相邻一个瓶子的颜色价值为它们颜色值的乘积#xff0c;求将所有瓶子变成同一个颜色的最低价值。 解题思路
枚举最后的剩下的颜色#xff0c;然后对于每个瓶子只有两种可能 1.直接变成那个颜色 2.变成别的颜色在变成那个颜…正题 题目大意
有n个瓶子将一个瓶子变成相邻一个瓶子的颜色价值为它们颜色值的乘积求将所有瓶子变成同一个颜色的最低价值。 解题思路
枚举最后的剩下的颜色然后对于每个瓶子只有两种可能 1.直接变成那个颜色 2.变成别的颜色在变成那个颜色 若我们要将X变成Z而中间变成Y更优我们可以判断 XZlt;XYZYXZlt;XYZYXZXYZY 则Ylt;X,Ylt;ZYlt;X,Ylt;ZYX,YZ 然后根据根据这个判断 code
#includecstdio
#includecstring
#includealgorithm
#define ll long long
using namespace std;
ll a[310],f[310],n,maxs,t;
ll check(ll x)//判断
{ll s0;memcpy(f,a,sizeof(f));for(ll i1;in;i)//往右合并if(f[i]!xf[i1]!xf[i]f[i1]x*f[i1]f[i]*f[i1]x*f[i]){sf[i]*f[i1];f[i]f[i1];}for(ll i2;in;i)//往左合并if(f[i]!xf[i-1]!xf[i]f[i-1]x*f[i-1]f[i-1]*f[i]x*f[i]){sf[i]*f[i-1];f[i]f[i-1];}for(ll i1;in;i)if(f[i]!x) sf[i]*x;return s;
}
int main()
{scanf(%lld,t);while(t--){scanf(%lld,n);maxs1e18;for(ll i1;in;i)scanf(%lld,a[i]);for(ll i1;in;i)maxsmin(maxs,check(a[i]));printf(%lld\n,maxs);}
}