尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

P4097【模板】李超线段树 / [HEOI2013] Segment 模板

P4097【模板】李超线段树 / [HEOI2013] Segment 模板
📅 发布时间:2026/6/19 14:37:18
#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-9;
int T, Lastans, n = 39989, m, Tcnt, Rt, ansid;
struct Line { double k, b; } a[1000005];
struct Tree { int ls, rs, id; } tr[10000005];
bool pd(int i, int j, int x) {if (a[i].k * x + a[i].b - a[j].k * x - a[j].b > eps)return true;if (a[j].k * x + a[j].b - a[i].k * x - a[i].b > eps)return false;return i < j;
}
void change(int &x, int l, int r, int sl, int sr, int now) {if (r < sl || sr < l)return ;if (!x)x = ++Tcnt;if (sl <= l && r <= sr) {if (pd(now, tr[x].id, l) && pd(now, tr[x].id, r)) {tr[x].id = now;return ;}if (pd(tr[x].id, now, l) && pd(tr[x].id, now, r))return ;int mid = (l + r) >> 1;if (pd(now, tr[x].id, mid))swap(now, tr[x].id);if (pd(now, tr[x].id, l))change(tr[x].ls, l, mid, sl, sr, now);if (pd(now, tr[x].id, r))change(tr[x].rs, mid + 1, r, sl, sr, now);}else {int mid = (l + r) >> 1;change(tr[x].ls, l, mid, sl, sr, now), change(tr[x].rs, mid + 1, r, sl, sr, now);}
}
void solve(int x, int l, int r, int s) {if (!x || r < s || s < l)return ;if (pd(tr[x].id, ansid, s))ansid = tr[x].id;if (l == r)return ;int mid = (l + r) >> 1;solve(tr[x].ls, l, mid, s), solve(tr[x].rs, mid + 1, r, s);
}
int main() {// freopen("test.in", "r", stdin);// freopen("test.out", "w", stdout);scanf("%d", &T);while (T--) {int id;scanf("%d", &id);if (id == 0) {int x;ansid = 0;scanf("%d", &x), x = (x + Lastans - 1) % n + 1;solve(1, 1, n, x), Lastans = ansid;printf("%d\n", ansid);}else {int sx, sy, ex, ey;scanf("%d%d%d%d", &sx, &sy, &ex, &ey);sx = (sx + Lastans - 1) % n + 1, sy = (sy + Lastans - 1) % 1000000000 + 1, ex = (ex + Lastans - 1) % n + 1, ey = (ey + Lastans - 1) % 1000000000 + 1;if (ex < sx)swap(sx, ex), swap(sy, ey);if (ex != sx)m++, a[m].k = 1.0 * (ey - sy) / (ex - sx), a[m].b = 1.0 * sy - a[m].k * sx;elsem++, a[m].k = 0, a[m].b = max(sy, ey);// a[m].k *= 10, a[m].b *= 10;change(Rt, 1, n, sx, ex, m);}}return 0;
}

相关新闻

  • 2025 年打包带源头厂家最新推荐榜:ISO 认证 + 日产 20 吨级实力厂商,物流仓储优选权威榜单高亮打包带/塑钢打包带/PP 打包带/PET 打包带/纯新料打包带厂家推荐
  • MATLAB实现光谱数据预处理
  • 告别稀疏发际线!2025值得入手的防脱洗发水推荐,根源防脱告别掉发

最新新闻

  • 200+专业动作库:如何为你的游戏角色注入生命力
  • 大平层装修选购指南:如何挑选靠谱设计与装修服务 - 速递信息
  • 如何用Nucleus Co-Op实现单机游戏4人分屏:技术原理与实战配置指南
  • developer-portfolio 扩展指南:添加博客、作品集和联系表单
  • 2026扬州大平层定制怎么选不踩坑 爱格授权本地品牌该怎么辨别 - 十大品牌排行榜
  • 2026年扬州全屋定制持证爱格授权门店合集 - 高定

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号