2 1 1 1 2 1 -1 0
Case #1: Yes. Case #2: No.HintIf input is huge, fast IO method is recommended.
#include <cstdio>
#include <cstring>
#include <set>
#define ll long long
using namespace std;
int const MAX = 1e6 + 5;
ll a[MAX], sum[MAX];
set <ll> s;
ll Scan()
{
ll res = 0, ch, flag = 0;
if((ch = getchar()) == '-')
flag = 1;
else if(ch >= '0' && ch <= '9')
res = ch - '0';
while((ch = getchar()) >= '0' && ch <= '9' )
res = res * 10 + ch - '0';
return flag ? -res : res;
}
int main()
{
int T, n, k;
scanf("%d", &T);
for(int ca = 1; ca <= T; ca++)
{
bool flag = false;
s.clear();
memset(sum, 0, sizeof(sum));
scanf("%d %d", &n, &k);
getchar();
for(int i = 1; i <= n; i++)
a[i] = Scan();
for(int i = 1; i <= n; i++)
sum[i] = sum[i - 1] + (i % 2 ? a[i] : -a[i]);
for(int i = n; i > 0; i--)
{
s.insert(sum[i]);
if(i % 2)
{
if(s.find(sum[i - 1] + k) != s.end())
{
flag = true;
break;
}
}
else
{
if(s.find(sum[i - 1] - k) != s.end())
{
flag = true;
break;
}
}
}
printf("Case #%d: %s.\n", ca, flag ? "Yes" : "No");
}
}
HDU 5183 Negative and Positive (NP) (set + 读入外挂 乱搞)
原文地址:http://blog.csdn.net/tc_to_top/article/details/44127119