poj 2785

    xiaoxiao2021-12-14  21

    折半枚举(双向搜索)

    //24716k, 6479ms #include <iostream> #include <algorithm> using namespace std; const int MAX_N = 4005; int n; int A[MAX_N], B[MAX_N], C[MAX_N], D[MAX_N]; int CD[MAX_N * MAX_N]; void solve() { for(int i=0; i<n; i++) for(int j=0; j<n; j++) CD[i * n + j] = C[i] + D[j]; sort(CD, CD + n * n); long long res = 0; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { int cd = -(A[i] + B[j]); res += upper_bound(CD, CD + n * n, cd) - lower_bound(CD, CD + n * n, cd); } } printf("%lld\n", res); } int main() { freopen("in.txt", "r", stdin); scanf("%d", &n); for(int i=0; i<n; i++) { scanf("%d%d%d%d", &A[i], &B[i], &C[i], &D[i]); } solve(); fclose(stdin); return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-963999.html

    最新回复(0)