82分求助 拜托了 (第五个和第六个测试点过不去)
查看原帖
82分求助 拜托了 (第五个和第六个测试点过不去)
379067
futz12楼主2021/2/21 10:41
#include <iostream>
#include <cmath>
#define N 1024
using namespace std;

int w[N];

int f[N];

int main()
{
	int n;
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		int a,b;
		cin>>a>>b;
		w[i]=a-b;
		f[0]+=w[i];
	}
	
	for(int i=1;i<=n;i++)
		f[i]=1e9;
	
	for(int i=1;i<=n;i++)
		for(int j=n;j>=1;j--)
			if(abs(f[j-1]-w[i]*2)<abs(f[j]))
				f[j]=f[j-1]-w[i]*2;
	
	
	int minn=1e9,addr;
	for(int i=0;i<=n;i++)
		if(abs(minn)>abs(f[i]))
		{
			minn=f[i];
			addr=i;
		}
	cout<<addr;
}

如题

和其他人的代码实现方法不太一样

利用差值做翻转

翻转后就是把 总差 减去 两个 该多米诺骨牌的差

2021/2/21 10:41
加载中...