传送门

题意简述:维护整体加一条线段,求单点极值。


思路:

直接上李超线段树维护即可。

代码:

#include<bits/stdc++.h>
#define ri register int
using namespace std;
typedef long long ll;
typedef double db;
const int N=1e5+5;
const db eps=1e-7;
struct Line{db k,b;}a[N];
inline bool check(const int&x,const int&y,const int&l){
	db t1=a[x].k*l+a[x].b,t2=a[y].k*l+a[y].b;
	return t1<t2;
}
namespace SGT{
	#define lc (p<<1)
	#define rc (p<<1|1)
	#define mid (l+r>>1)
	int id[N<<2];
	inline void update(int p,int l,int r,int k){
		if(!id[p])id[p]=k;
		int l1=id[p],l2=k;
		if(check(l1,l2,l))swap(l1,l2);
		id[p]=l1;
		if(l==r||fabs(a[l1].k-a[l2].k)<eps)return;
		db x=(a[l1].b-a[l2].b)/(a[l2].k-a[l1].k);
		if(x<l||x>r)return;
		if(x<=mid)return id[p]=l2,update(lc,l,mid,l1);
		return update(rc,mid+1,r,l2);
	}
	inline int query(int p,int l,int r,int k){
		int val=id[p]?(int)(a[id[p]].k*k+a[id[p]].b)/100:0;
		if(l==r)return val;
		return max(val,k<=mid?query(lc,l,mid,k):query(rc,mid+1,r,k));
	}
}
inline int read(){
	int ans=0;
	char ch=getchar();
	while(!isdigit(ch))ch=getchar();
	while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
	return ans;
}
int main(){
	char s[8];
	for(ri x,tot=0,n=read(),tt=1;tt<=n;++tt){
		scanf("%s",s);
		if(s[0]=='Q')cout<<SGT::query(1,1,n,read())<<'\n';
		else{
			double x,y;
			scanf("%lf%lf",&x,&y);
			a[++tot]=(Line){y,x-y};
			SGT::update(1,1,n,tot);
		}
	}
	return 0;
}

最新文章

  1. delegate notification kvo三者比较
  2. 使用@ContextConfiguration注解后,提示找不到配置文件
  3. [转载]GDI+中发生一般性错误
  4. 个人整理--Java编码规范
  5. 后台构建 html 字符串传到前台字符串转码(html)处理
  6. 实现在Android 多点手势识别
  7. 用smarty模板做的登录
  8. 如何在PHP7中安装mysql的扩展
  9. dedecms调用文章内容
  10. Python“Non-ASCII character &#39;xe5&#39; in file”报错问题
  11. 通过Cookie跳过登录验证码【限cookie不失效有用】
  12. vue.js用select实现省,市,提交后,默认显示省,市信息
  13. ECR是什么意思
  14. mybatis 插入返回自增后的id
  15. js倒计时跳转页面实现
  16. vue view 表单验证正常逻辑
  17. sqlserver 创建对某个存储过程执行情况的跟踪
  18. 201621123010《Java程序设计》第6周学习总结
  19. 20169221 2016——2017《网络攻防》SQL注入
  20. 自定义控件_StickyNavLaout

热门文章

  1. [UE4]Named Slot
  2. [UE4]Border
  3. mybatis的typeHandler
  4. 用GDB调试程序(五)
  5. 实战ELK(6)使用logstash同步mysql数据到ElasticSearch
  6. .net core 微服务之日志落盘设计
  7. ArrayList实现动态数组原理
  8. 示例:pm_multiple_models 匹配——形状匹配
  9. 【iOS】Objective-C 字符串操作
  10. netty(一) netty有哪几部分构成