請問一下4,5測資是甚麼
我不考慮超過10007的話 4,5 AC ;7,9 NA
若有考慮4,5NA ;7,9 AC;
code
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,sum=0;
cin>>n;
int x[n];vector<int> v;
for(int i=0;i<n;i++) cin>>x[i],sum+=(x[i]);
if(sum<=10007 and sum%2==1)
{
cout<<"NO"<<endl;
}
else if(sum>10007)
{
sum/=2;
bool ans=false;
int dp[sum+1];
for(int i=0;i<=sum;i++) dp[i]=0;
for(int i=0;i<n;i++)
{
if(ans) break;
for(int j=sum;j>=0;j--)
{
if(j-x[i]<0) break;
dp[j]=max(dp[j],dp[j-x[i]]+x[i]);
if(find(v.begin(),v.end(),dp[j]%10007)!=v.end())
{
ans=true;break;
}
else v.push_back(dp[j]%10007);
}
}
if(dp[sum]==sum or ans) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
else
{
sum/=2;
int dp[sum+1];
for(int i=0;i<=sum;i++) dp[i]=0;
for(int i=0;i<n;i++)
{
for(int j=sum;j>=0;j--)
{
if(j-x[i]<0) break;
dp[j]=max(dp[j],dp[j-x[i]]+x[i]);
}
}
if(dp[sum]==sum) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}