QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#748498#9748. 最大公因数的平方和hhoppitreeCompile Error//C++172.2kb2024-11-14 20:33:522024-11-14 20:33:52

Judging History

你现在查看的是最新测评结果

  • [2024-11-14 20:33:52]
  • 评测
  • [2024-11-14 20:33:52]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

const int N = 1e5 + 5, M = 2e6 + 5;

int a[N], b[N], p1[N], c[M], p2[N], d[M], cnt1[N], cnt2[N];
vector<int> D[N];
unsigned int f[N], res[N];

struct op {
    int l, r, id;
} p[N << 2];

int sz;

int cmp(op x, op y) {
    return ((x.l - 1) / sz + 1 != (y.l - 1) / sz + 1 ? x.l < y.l : (((x.l - 1) / sz + 1) & 1) ? x.r < y.r : x.r > y.r);
}

signed main() {
    int n; scanf("%d", &n);
    for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
    for (int i = 1; i <= n; ++i) scanf("%d", &b[i]);
    for (int i = 1; i <= n; ++i) {
        f[i] += i * i;
        for (int j = i + i; j <= n; j += i) f[j] -= f[i];
        for (int j = i; j <= n; j += i) D[j].push_back(i);
    }
    for (int i = 1; i <= n; ++i) {
        p1[i] = p1[i - 1];
        for (auto j : D[a[i]]) {
            c[++p1[i]] = j;
        }
    }
    for (int i = 1; i <= n; ++i) {
        p2[i] = p2[i - 1];
        for (auto j : D[b[i]]) {
            d[++p2[i]] = j;
        }
    }
    int q, z = 0; scanf("%d", &q);
    for (int i = 1; i <= q; ++i) {
        int l1, r1, l2, r2; scanf("%d%d%d%d", &l1, &r1, &l2, &r2);
        l1 = p1[l1 - 1] + 1, r1 = p1[r1];
        l2 = p2[l2 - 1] + 1, r2 = p2[r2];
        p[++z] = {l1 - 1, l2 - 1, i};
        p[++z] = {l1 - 1, r2, -i};
        p[++z] = {r1, l2 - 1, -i};
        p[++z] = {r1, r2, i};
    }
    sz = max(min(z / sqrt(p1[n]), p1[n]), 1);
    sort(p + 1, p + z + 1, cmp);
    int z1 = 0, z2 = 0;
    unsigned int now = 0;
    for (int i = 1; i <= z; ++i) {
        while (z1 < p[i].l) {
            ++z1;
            now += cnt2[c[z1]];
            cnt1[c[z1]] += f[c[z1]];
        }
        while (z2 < p[i].r) {
            ++z2;
            now += cnt1[d[z2]];
            cnt2[d[z2]] += f[d[z2]];
        }
        while (z1 > p[i].l) {
            now -= cnt2[c[z1]];
            cnt1[c[z1]] -= f[c[z1]];
            --z1;
        }
        while (z2 > p[i].r) {
            now -= cnt1[d[z2]];
            cnt2[d[z2]] -= f[d[z2]];
            --z2;
        }
        res[abs(p[i].id)] += (p[i].id / abs(p[i].id) * now);
    }
    for (int i = 1; i <= q; ++i) printf("%u\n", res[i]);
    return 0;
}

详细

answer.code: In function ‘int main()’:
answer.code:52:17: error: no matching function for call to ‘min(__gnu_cxx::__enable_if<true, double>::__type, int&)’
   52 |     sz = max(min(z / sqrt(p1[n]), p1[n]), 1);
      |              ~~~^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:60,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51,
                 from answer.code:1:
/usr/include/c++/13/bits/stl_algobase.h:233:5: note: candidate: ‘template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)’
  233 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/13/bits/stl_algobase.h:233:5: note:   template argument deduction/substitution failed:
answer.code:52:17: note:   deduced conflicting types for parameter ‘const _Tp’ (‘double’ and ‘int’)
   52 |     sz = max(min(z / sqrt(p1[n]), p1[n]), 1);
      |              ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/stl_algobase.h:281:5: note: candidate: ‘template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)’
  281 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/13/bits/stl_algobase.h:281:5: note:   template argument deduction/substitution failed:
answer.code:52:17: note:   deduced conflicting types for parameter ‘const _Tp’ (‘double’ and ‘int’)
   52 |     sz = max(min(z / sqrt(p1[n]), p1[n]), 1);
      |              ~~~^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:61:
/usr/include/c++/13/bits/stl_algo.h:5775:5: note: candidate: ‘template<class _Tp> constexpr _Tp std::min(initializer_list<_Tp>)’
 5775 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/13/bits/stl_algo.h:5775:5: note:   template argument deduction/substitution failed:
answer.code:52:17: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘double’
   52 |     sz = max(min(z / sqrt(p1[n]), p1[n]), 1);
      |              ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/stl_algo.h:5785:5: note: candidate: ‘template<class _Tp, class _Compare> constexpr _Tp std::min(initializer_list<_Tp>, _Compare)’
 5785 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/13/bits/stl_algo.h:5785:5: note:   template argument deduction/substitution failed:
answer.code:52:17: note:   mismatched types ‘std::initializer_list<_Tp>’ and ‘double’
   52 |     sz = max(min(z / sqrt(p1[n]), p1[n]), 1);
      |              ~~~^~~~~~~~~~~~~~~~~~~~~~~~
answer.code:22:17: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   22 |     int n; scanf("%d", &n);
      |            ~~~~~^~~~~~~~~~
answer.code:23:39: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   23 |     for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
      |                                  ~~~~~^~~~~~~~~~~~~
answer.code:24:39: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   24 |     for (int i = 1; i <= n; ++i) scanf("%d", &b[i]);
      |                                  ~~~~~^~~~~~~~~~~~~
answer.code:42:24: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   42 |     int q, z = 0; scanf("%d", &q);
      |                   ~~~~~^~~~~~~~~~
answer.code:44:34: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   44 |         int l1, r1, l2, r2; scanf("%d%d%d%d", &l1, &r1, &l2, &r2);
      |                             ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~