#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
const int N = 2e5 + 10;
int a[N],b[N];
ll f[N];
int main()
{
IOS;
int _;
int n,x;
cin >> _;
while( _ -- )
{
cin >> n >> x;
ll s = 0;
for( int i = 1 ; i <= n ; i ++ )
{
cin >> a[i] >> b[i];
s += b[i];
}
fill(f , f + s + 1 , -1e18 );
f[0] = 0;
for( int i = 1 ; i <= n ; i ++ )
{
for( int j = s ; j >= 0 ; j -- )
{
if(j >= b[i] && f[j - b[i]] >= a[i] ) f[j] = max(f[j] , f[j-b[i]] - a[i] );
f[j] += x;//为什么这里可以这样写??????为什么为什么为啥?????
}
}
int ans = 0;
for( int i = s ; i >= 0 ; i -- )
{
if( f[i]>=0 )
{
ans = i;
break;
}
}/*
for( int i = 1 ; i <= s ; i ++ )
{
if( f[i] >= 0 ) ans = i;
}*/
cout << ans << endl;
}
}
codeforces Round 946(div.3---E题)(dp题目)
最新推荐文章于 2024-06-12 10:00:23 发布