//#pragma GCC optimize(2)
//#pragma GCC optimize(3,"Ofast","inline")
#include<bits/stdc++.h>
#define int long long
#define fi first
#define se second
#define pb push_back
#define pii pair<int,int>
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const int inf=8e18;
const int maxn=2e5+100;
int a[maxn];
int v[maxn];
int dp[4010];
signed main()
{
IOS
int tt;
cin>>tt;
while(tt--)
{
int n;
cin>>n;
for(int i=1; i<=2*n; i++)
{
cin>>a[i];
}
int sum=1,mx=a[1],cnt=0;
for(int i=2; i<=2*n; i++)
{
if(a[i]>mx)
{
v[++cnt]=sum;
sum=1;
mx=a[i];
}
else
{
sum++;
}
}
v[++cnt]=sum;
for(int i=1; i<=cnt; i++)
{
for(int j=2*n; j>=v[i]; j--)
{
dp[j]=max(dp[j],dp[j-v[i]]+v[i]);
}
}
if(dp[n]==n)cout<<"YES\n";
else cout<<"NO\n";
for(int j=0; j<=2*n; j++)
{
dp[j]=0;
}
}
}
D. Unmerge(01背包)
最新推荐文章于 2024-06-21 17:14:10 发布