懒得写详细的了,有问题私信/评论见
上代码(气势
#include<bits/stdc++.h>
using namespace std;
int n,t[1010],f[1010][6060];
int main() {
cin>>n;
for(int i = 1;i <= n;i++)
{
int a,b;
cin>>a>>b;
t[i] = a - b;
}
memset(f,0x3f,sizeof(f));
int s = 3 * n;
f[0][0 + s] = 0;
for(int i = 1;i <= n;i++)
for(int j = 0;j <= 2 * s;j++)
{
if(0 <= j - t[i] && j - t[i] <= 2 * s)
f[i][j] = min(f[i][j],f[i-1][j-t[i]]);
if(0 <= j + t[i] && j + t[i] <= 2 * s)
f[i][j] = min(f[i][j],f[i-1][j+t[i]] + 1);
}
int INF = 0x3f3f3f3f;
for(int j = 0;j <= s;j++)
if(f[n][s-j] < INF || f[n][s+j] < INF)
{
cout<<min(f[n][s-j],f[n][s+j])<<endl;
break;
}
return 0;
}
(溜了溜了