鱼C论坛

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

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

[复制链接]
发表于 2023-4-15 13:38:07 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 2 鱼币 才能浏览
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-4-15 13:50:57 | 显示全部楼层    本楼为最佳答案   
看起来你的代码有一处小错误。在 query 函数的参数列表中,int 和参数名称之间缺少一个空格。请修改 query 函数的参数列表,如下所示:

  1. int query(int u, int l, int r, double k) {
复制代码


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

  4. using namespace std;

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

  7. int n, m, tot;
  8. double a[maxn], b[maxn], c[maxn];

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

  10. void pushup(int u) {
  11.     int ls = u << 1, rs = u << 1 | 1;
  12.     for (int i = 0, j = 0; i < tr[ls].size() || j < tr[rs].size();) {
  13.         if (i == tr[ls].size()) tr[u].push_back(tr[rs][j++]);
  14.         else if (j == tr[rs].size() || a[tr[ls][i]] - b[tr[ls][i]] < a[tr[rs][j]] - b[tr[rs][j]]) {
  15.             tr[u].push_back(tr[ls][i++]);
  16.         } else {
  17.             tr[u].push_back(tr[rs][j++]);
  18.         }
  19.     }
  20. }

  21. void build(int u, int l, int r) {
  22.     tr[u].clear();
  23.     if (l + 1 == r) {
  24.         tr[u].push_back(l);
  25.         return;
  26.     }
  27.     int mid = (l + r) >> 1;
  28.     build(u << 1, l, mid);
  29.     build(u << 1 | 1, mid, r);
  30.     pushup(u);
  31. }

  32. void modify(int u, int l, int r, int pos, int val) {
  33.     if (l + 1 == r) {
  34.         tr[u].push_back(pos);
  35.         return;
  36.     }
  37.     int mid = (l + r) >> 1;
  38.     if (mid > pos) modify(u << 1, l, mid, pos, val);
  39.     else modify(u << 1 | 1, mid, r, pos, val);
  40.     pushup(u);
  41. }

  42. int query(int u, int l, int r, double k) {
  43.     if (tr[u].empty()) return -1;
  44.     if (l + 1 == r) return tr[u][0];
  45.     int mid = (l + r) >> 1, ans = -1;
  46.     for (int i = 0; i < tr[u].size(); ++i) {
  47.         int p = tr[u][i];
  48.         c[p] = a[p] * k - b[p];
  49.         if (c[p] > c[ans]) ans = p;
  50.     }
  51.     if (ans != -1) return ans;
  52.     if (k < eps) return -1;
  53.     if (!tr[u << 1].empty() && a[tr[u << 1][0]] > b[tr[u << 1][0]] / k) {
  54.         ans = query(u << 1, l, mid, k);
  55.     }
  56.     if (ans == -1 && !tr[u << 1 | 1].empty() && a[tr[u << 1 | 1][0]] > b[tr[u << 1 | 1][0]] / k) {
  57.         ans = query(u << 1 | 1, mid, r, k);
  58.     }
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-15 14:10:57 | 显示全部楼层
你是要发悬赏吧,售价是别人给鱼币,悬赏是你给别人鱼币
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-15 16:31:19 | 显示全部楼层
你这是提问呢还是收鱼币呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 14:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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