POJ2785 4 Values whose Sum is 0(二分的力量)
2018-03-30 21:22
190 查看
# include <cstdio>
# include <string>
# include <cstring>
# include <iostream>
# include <algorithm>
using namespace std;int a[4005], b[4005], c[4005], d[4005];
int sum[16000025], sum2[16000025];int main()
{
int t;
cin >> t;
while (t--)
{
int n, i, j, len = 0, ans = 0;;
cin >> n;
for (i = 0; i<n; i++)
scanf_s("%d%d%d%d", &a[i], &b[i], &c[i], &d[i]);
for (i = 0; i<n; i++)
for (j = 0; j<n; j++)
sum[len++] = a[i] + b[j];
len = 0;
for (i = 0; i<n; i++)
for (j = 0; j<n; j++)
sum2[len++] = c[i] + d[j]; sort(sum2, sum2 + len);
for (i = 0; i<len; i++)
{
int l = 0, r = len - 1, mid;
while (l<r)
{
mid = (r + l) >> 1;
if (sum[i]<-sum2[mid]) l = mid + 1;
else r = mid;
}
while (sum2[l] == -sum[i] && l<len)
{
ans++;
l++;
}
}
printf("%d\n", ans);
if (t) printf("\n");
}
return 0;
}
# include <string>
# include <cstring>
# include <iostream>
# include <algorithm>
using namespace std;int a[4005], b[4005], c[4005], d[4005];
int sum[16000025], sum2[16000025];int main()
{
int t;
cin >> t;
while (t--)
{
int n, i, j, len = 0, ans = 0;;
cin >> n;
for (i = 0; i<n; i++)
scanf_s("%d%d%d%d", &a[i], &b[i], &c[i], &d[i]);
for (i = 0; i<n; i++)
for (j = 0; j<n; j++)
sum[len++] = a[i] + b[j];
len = 0;
for (i = 0; i<n; i++)
for (j = 0; j<n; j++)
sum2[len++] = c[i] + d[j]; sort(sum2, sum2 + len);
for (i = 0; i<len; i++)
{
int l = 0, r = len - 1, mid;
while (l<r)
{
mid = (r + l) >> 1;
if (sum[i]<-sum2[mid]) l = mid + 1;
else r = mid;
}
while (sum2[l] == -sum[i] && l<len)
{
ans++;
l++;
}
}
printf("%d\n", ans);
if (t) printf("\n");
}
return 0;
}
相关文章推荐
- POJ2785 4 Values whose Sum is 0(二分的力量)
- POJ2785_Values whose Sum is 0_二分
- POJ2785 4 Values whose Sum is 0(二分)
- POJ2785 4 Values whose Sum is 0(暴力二分查找)
- POJ2785:4 Values whose Sum is 0(二分)
- POJ2785_4 Values whose Sum is 0_哈希||二分
- POJ2785:4 Values whose Sum is 0(二分+暴力)
- POJ2785 4 Values whose Sum is 0(折半枚举+二分)
- POJ 2785:4 Values whose Sum is 0 二分
- POJ 2785 4 Values whose Sum is 0(二分)
- POJ - 2785 4 Values whose Sum is 0 二分
- POJ-2785 4 Values whose Sum is 0 Hash | sort+二分
- POJ-2785 4 Values whose Sum is 0(折半枚举 sort + 二分)
- (二分)4 Values whose Sum is 0
- POJ 2785 4 Values whose Sum is 0(二分+折半枚举)
- 【折半枚举 && 二分】POJ - 2785 4 Values whose Sum is 0
- POJ 2785:4 Values whose Sum is 0 二分
- 4 Values whose Sum is 0 --CSU-ACM2017暑假集训2-二分搜索
- POJ-2785(二分) 4 Values whose Sum is 0
- poj2785 4 Values whose Sum is 0 双向搜索