ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

D. Yet Another Minimization Problem

2022-02-26 09:32:45  阅读:174  来源: 互联网

标签:Minimization rep i2 vct sum Problem Yet dp ans


D. Yet Another Minimization Problem

题目大意:

​ 有两个长度相等的数组ab,可以将相同下标的ai,bi交换无限次。求以下式子的最小值。
$$
\sum_{i=1}^{n}\sum_{j = i+1}{n}(a_i+a_j)2+\sum_{i=1}^{n}\sum_{j = i+1}{n}(b_i+b_j)2
$$

思路和代码:

这道题的关键就是化简该公式。因为a和b的式子一样,所以先化简a。
$$
\sum_{i=1}^{n}\sum_{j = i+1}{n}(a_i+a_j)2=\sum_{i=1}^{n}\sum_{j = i+1}{n}(a_{i}{2}+a_{j}^{2}+2a_ia_j)
$$

$$
=(n-1)\sum_{i=1}{n}a_i2+\sum_{i=1}^{n}\sum_{j = i+1}^{n}(2a_ia_j)
$$

$$
=(n-1)\sum_{i=1}{n}a_i2+\sum_{i=1}n(a_i*sum-a_i2)
$$

$$
=(n-2)\sum_{i=1}{n}a_i2+sum*\sum_{i=1}n(a_i)=(n-2)\sum_{i=1}{n}a_i2+sum2
$$

下图是2aiaj的化简方法:

最终结果应该是:
$$
=((n-2)\sum_1n(a_i2+b_i2))+(suma2+sumb^2)
$$
因为不管aibi怎么交换,上述式子的前半部分是不变的,所以我们只要找出后半部分的最小值即可。

利用一个变相的01背包(把取和不取改成交换和不交换)

还有一点要注意的是,01背包是在n个物品里选择若干个使得总价值最优,而这里我们是需要选择全部的n个。所以不能用滚动数组一维优化。

ll solve(){
	ll n , m , k , sum , ans = INF ;
	cin >> n ;
	
	m = sum = k = 0 ;
	vct<ll> a(n + 1 , 0) ;
	vct<ll> b(n + 1 , 0) ;
	rep(i , 1 , n) cin >> a[i] ;
	rep(i , 1 , n) cin >> b[i] ;
	
	if(n == 1) return 0 ;
	
	rep(i , 1 , n) m += max(a[i] , b[i]) ;
	rep(i , 1 , n) sum += a[i] + b[i] ;
	
	vct<vct<bool> > dp(n + 1 , vct<bool> (m + 1 , 0)) ;
	
	dp[0][0] = 1 ;
	
	rep(i , 1 , n)
	rep(j , min(a[i] , b[i]) , m){
		if(j >= a[i] && !dp[i][j]) dp[i][j] = dp[i - 1][j - a[i]] ;
		if(j >= b[i] && !dp[i][j]) dp[i][j] = dp[i - 1][j - b[i]] ;
	}
	rep(i , 1 , m)
		if(dp[n][i])ans = min(ans , i * i + (sum - i) * (sum - i)) ;
	
	rep(i , 1 , n) k += a[i] * a[i] + b[i] * b[i] ;
	return ans + (n - 2) * k ;
	
}//code_by_tyrii 
小结:

式子的推导可以用具体数量来看。

基础算法能解决的问题不能混淆,就像普通01背包是前n个而不是全部n个。

标签:Minimization,rep,i2,vct,sum,Problem,Yet,dp,ans
来源: https://www.cnblogs.com/tyriis/p/15938511.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有