鱼C论坛

 找回密码
 立即注册
查看: 1219|回复: 3

[已解决]求助,这段代码CE了

[复制链接]
发表于 2023-4-15 13:38:07 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 2 鱼币 才能浏览
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[maxn], b[maxn], c[maxn];

vector<int> tr[maxn << 2];

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

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-15 14:10:57 | 显示全部楼层
你是要发悬赏吧,售价是别人给鱼币,悬赏是你给别人鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-15 16:31:19 | 显示全部楼层
你这是提问呢还是收鱼币呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 09:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表