解题思路:
代码:
#include <bits/stdc++.h>
using namespace std;
int arr[150000];
int dp[3610],temp[3610];
int main()
{
int n,t;
cin>>t;
while(t--)
{
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d",&arr[i]);
if(n>=3600) puts("YES");
else
{
memset(dp,0, sizeof(dp));
memset(temp,0, sizeof(temp));
for(int i=1;i<=n;++i)
{
if(dp[0]>0) break;
for(int j=0;j<3600;++j)
{
if(j==0||temp[j]!=0)//此处是temp不是dp想想为什么
dp[(j+arr[i])%3600]=temp[j]+1;
}
for(int j=0;j<3600;++j)
temp[j]=max(temp[j],dp[j]);
}
if(dp[0]>0) puts("YES");
else puts("NO");
}
}
return 0;
}