C118【模板】李超线段树 P4254 [JSOI2008] Blue Mary 开公司

news/2024/9/29 21:34:07

视频链接:

 

 

 

Luogu P4254 [JSOI2008] Blue Mary 开公司

// 李超线段树 O(nlognlogn)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;#define N 50005
#define ls u<<1
#define rs u<<1|1
int n,cnt;
struct line{double k,b; //斜率,截距
}p[N*2];
int tr[N*4]; //线段编号double Y(int id,int x){ //求Y值return p[id].k*x+p[id].b;
}
void change(int u,int l,int r,int L,int R,int id){ //区修int mid=(l+r)>>1;if(L<=l&&r<=R){if(Y(id,mid)>Y(tr[u],mid)) swap(id,tr[u]);if(Y(id,l)>Y(tr[u],l)) change(ls,l,mid,L,R,id);if(Y(id,r)>Y(tr[u],r)) change(rs,mid+1,r,L,R,id);return;}if(L<=mid) change(ls,l,mid,L,R,id);if(mid<R) change(rs,mid+1,r,L,R,id);
}
double query(int u,int l,int r,int x){ //点查if(l==r) return Y(tr[u],x);int mid=(l+r)>>1;double t=Y(tr[u],x);if(x<=mid) return max(t,query(ls,l,mid,x));else return max(t,query(rs,mid+1,r,x));
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++){char op[10]; scanf("%s",op);if(op[0]=='P'){double b,k; scanf("%lf%lf",&b,&k);p[++cnt]={k,b-k};change(1,1,N,1,N,cnt);}else{int x; scanf("%d",&x);printf("%d\n",(int)query(1,1,N,x)/100);}}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/29979.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

时序仿真中阻塞赋值和非阻塞赋值的区别

1 实验设置 1.1 功能模块编写 设置8位的变量c,通过非阻塞赋值的方式,将同样为8位的变量a和变量b之间按位与的结果赋值给c,代码如下: module test_a4_and_b4(clk,a,b,c, );input wire clk;input wire [7:0] a;input wire [7:0] b;output reg [7:0] c = 0;//非阻塞赋值a…

项目冲刺——第四篇Scrum冲刺博客

作业所属课程 所属课程作业要求 作业要求作业目标 总结第三天的敏捷开发,安排好第四天敏捷开发冲刺一、站立式会议 1、会议图片2、昨天已完成的内容成员 任务肖杨、梁丽贤 完成贴子发布模块设计黄诃华、欧文杰 完成邮箱发送功能功能姚佳如、李慧娣 完成个人信息界面的设计廖莹…

【第三章】推荐系统冷启动问题

推荐系统需要根据用户的历史行为和兴趣预测用户未来的行为和兴趣,在没有足够初始数据的情况下,设计个性化推荐系统并且让用户对推荐结果满意从而愿意使用推荐系统,就是冷启动的问题。 3.1 冷启动问题简介用户冷启动:新用户没有历史数据 物品冷启动:将新物品推荐给可能对它…

kettle从入门到精通 第五十八课 ETL之kettle HTTP post使用教程

1、今天群里有位朋友问我有没有关于调用http接口的kettle 示例,我下意识的去翻我的公众号推文,愣是没找到。果断开始撸。 2、本次演示流程通过调用接口【网易云音乐随机歌曲】,然后解析返回的数据,接口信息如下图所示:3、本次演示流程通过调用接口【网易云音乐随机歌曲】,…

通过Docker Compose部署GitLab和GitLab Runner(一)

GitLab 是一个用于版本控制、项目管理和持续集成的开源软件平台,它提供了一整套工具,能够帮助团队高效地协作开发。而 GitLab Runner 则是 GitLab CI/CD 的执行者,用于运行持续集成和持续交付任务。 在本文中,我们将使用 Docker Compose 来快速部署 GitLab 和 GitLab Runne…

d3d12龙书阅读----绘制几何体(下)

d3d12龙书阅读----绘制几何体(下) 本节在上一节的基础上,对整个绘制过程进行优化,将绘制单个几何体的内容拓展到了多个几何体,同时对根签名进行了进一步地探索。 帧资源 在之前绘制每帧的结尾,我们都要使用flushingcommandqueue方法,要一直等待gpu执行完所有命令,才会继…

如何使用postman测试带Token的登录以及其他的测试接口

参考文章:https://blog.csdn.net/xzytl60937234/article/details/845009371.Postman设置变量并访问 点击右上角眼睛,在Globals选项中,选择edit 然后add 在弹出的页面中:,填写token 填写成功之后,右下角,点击save 在登录接口中,Test 选项中加入以下代码 var data = JSO…

PTA-1002

原先主要错误: 没有考虑到有关0的相关情况观看的大佬代码整理思路无非就是在相同的指数的情况下,系数相加 因为最后是要从大到小输出来。注意要对最后的结果进行四舍五入; PTA的英语题对英语不好的我真心不友好。#include<map> #include<cmath> #include<iost…