贪吃蛇2 发表于 2023-4-15 13:38:07

本主题需向作者支付 2 鱼币 才能浏览 购买主题

isdkz 发表于 2023-4-15 13:50:57

看起来你的代码有一处小错误。在 query 函数的参数列表中,int 和参数名称之间缺少一个空格。请修改 query 函数的参数列表,如下所示:

int query(int u, int l, int r, double k) {


更正后的完整代码如下:
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

const int maxn = 1e5 + 10;
const double eps = 1e-6;

int n, m, tot;
double a, b, c;

vector<int> tr;

void pushup(int u) {
    int ls = u << 1, rs = u << 1 | 1;
    for (int i = 0, j = 0; i < tr.size() || j < tr.size();) {
      if (i == tr.size()) tr.push_back(tr);
      else if (j == tr.size() || a] - b] < a] - b]) {
            tr.push_back(tr);
      } else {
            tr.push_back(tr);
      }
    }
}

void build(int u, int l, int r) {
    tr.clear();
    if (l + 1 == r) {
      tr.push_back(l);
      return;
    }
    int mid = (l + r) >> 1;
    build(u << 1, l, mid);
    build(u << 1 | 1, mid, r);
    pushup(u);
}

void modify(int u, int l, int r, int pos, int val) {
    if (l + 1 == r) {
      tr.push_back(pos);
      return;
    }
    int mid = (l + r) >> 1;
    if (mid > pos) modify(u << 1, l, mid, pos, val);
    else modify(u << 1 | 1, mid, r, pos, val);
    pushup(u);
}

int query(int u, int l, int r, double k) {
    if (tr.empty()) return -1;
    if (l + 1 == r) return tr;
    int mid = (l + r) >> 1, ans = -1;
    for (int i = 0; i < tr.size(); ++i) {
      int p = tr;
      c = a * k - b;
      if (c > c) ans = p;
    }
    if (ans != -1) return ans;
    if (k < eps) return -1;
    if (!tr.empty() && a] > b] / k) {
      ans = query(u << 1, l, mid, k);
    }
    if (ans == -1 && !tr.empty() && a] > b] / k) {
      ans = query(u << 1 | 1, mid, r, k);
    }


歌者文明清理员 发表于 2023-4-15 14:10:57

你是要发悬赏吧,售价是别人给鱼币,悬赏是你给别人鱼币

陶远航 发表于 2023-4-15 16:31:19

你这是提问呢还是收鱼币呢
页: [1]
查看完整版本: 求助,这段代码CE了