建设银行不招聘网站,网络营销推广方式步骤,宿迁网络公司,wordpress广告代码在哪里正题
评测记录:https://www.luogu.org/recordnew/lists?uid52918pidP1282 题目大意
n个多米诺骨牌#xff0c;上下值不相同#xff0c;可以交换一个多米诺上下的值#xff0c;求最少的交换次数使上下之和的差值最小。 解题思路
用fi,jNfi,jN表示只计算前i个多米诺52918pidP1282 题目大意
n个多米诺骨牌上下值不相同可以交换一个多米诺上下的值求最少的交换次数使上下之和的差值最小。 解题思路
用fi,jNfi,jNf_{i,j+N}表示只计算前i个多米诺上下之差为j需要的最小次数然后类似背包的想法正常用差值转移就好了。 code
#includecstdio
#includecstring
#includealgorithm
#define N 5000
using namespace std;
int n,n1,n2,f[1001][N*3],a[1001],ans,mins;
int main()
{scanf(%d,n);for(int i1;in;i){scanf(%d%d,n1,n2);a[i]n1-n2;//只保存差值}memset(f,127/3,sizeof(f));f[0][N]0;//初始化for(int i1;in;i){for(int j-N;jN;j){f[i][jN]min(f[i-1][jN-a[i]],f[i-1][jNa[i]]1);}}for(int i0;iN;i){minsmin(f[n][Ni],f[n][N-i]);//计算最小答案if(mins1000)break;}printf(%d,mins);
}