本文共 531 字,大约阅读时间需要 1 分钟。
有n个瓶子,将一个瓶子变成相邻一个瓶子的颜色价值为它们颜色值的乘积,求将所有瓶子变成同一个颜色的最低价值。
枚举最后的剩下的颜色,然后对于每个瓶子只有两种可能
1.直接变成那个颜色 2.变成别的颜色在变成那个颜色 若我们要将X变成Z,而中间变成Y更优,我们可以判断 X Z < = X Y + Z Y XZ<=XY+ZY XZ<=XY+ZY 则 Y < = X , Y < = Z Y<=X,Y<=Z Y<=X,Y<=Z 然后根据根据这个判断#include#include #include #define ll long longusing namespace std;ll a[310],f[310],n,maxs,t;ll check(ll x)//判断{ ll s=0; memcpy(f,a,sizeof(f)); for(ll i=1;i f[i+1]&&x*f[i+1]+f[i]*f[i+1] f[i-1]&&x*f[i-1]+f[i-1]*f[i]
转载地址:http://axzaf.baihongyu.com/