SP1296 SUMFOUR - 4 values whose sum is 0
题意
给定 个长度均为 的序列 。求有多少组 满足 。
解法
考虑将这个柿子转化成 。
把 用 的复杂度暴力算出来,用哈希存一下数量,然后 枚举 和 ,把每个 统计答案即可。
注意不要使用 map/umap,会被卡,我使用的是 pbds 的 gp_hash_table。
#pragma GCC optimize("-Ofast")
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <map>
#include <bits/extc++.h>
using namespace std;
using namespace __gnu_pbds;
const int N = 4005;
gp_hash_table<int, int> mp;
int n, a[N], b[N], c[N], d[N];
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
scanf("%d%d%d%d", &a[i], &b[i], &c[i], &d[i]);
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
mp[a[i] + b[j]]++;
}
}
int ret = 0;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
ret += mp[-c[i] - d[j]];
}
}
printf("%d\n", ret);
return 0;
}

浙公网安备 33010602011771号