您的位置:首页 > 产品设计 > UI/UE

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: