题意:P:加入一条一次函数。Q:询问x位置的最大函数值。

标程:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=;
  4. int q,x,n;
  5. double Tk[N],Tb[N],b,k,ans;
  6. char s[];
  7. void add(int x,int l,int r,double b,double k)
  8. {
  9. if (!Tk[x]&&!Tb[x]) {Tk[x]=k;Tb[x]=b;return;}
  10. double fl1=Tk[x]*l+Tb[x],fl2=k*l+b;
  11. double fr1=Tk[x]*r+Tb[x],fr2=k*r+b;
  12. if (fl1>=fl2&&fr1>=fr2) return;
  13. if (fl1<fl2&&fr1<fr2) {Tk[x]=k;Tb[x]=b;return;}
  14. double dot=(double)(Tb[x]-b)/(k-Tk[x]);int mid=(l+r)>>;
  15. if (k<Tk[x])
  16. {
  17. if (dot<=mid) add(x<<,l,mid,b,k);
  18. else add(x<<|,mid+,r,Tb[x],Tk[x]),Tk[x]=k,Tb[x]=b;
  19. }else
  20. {
  21. if (dot<=mid) add(x<<,l,mid,Tb[x],Tk[x]),Tk[x]=k,Tb[x]=b;
  22. else add(x<<|,mid+,r,b,k);
  23. }
  24. }
  25. void qry(int k,int l,int r,int x)
  26. {
  27. ans=max(ans,Tk[k]*x+Tb[k]);
  28. if (l==r) return;
  29. int mid=(l+r)>>;
  30. if (x<=mid) qry(k<<,l,mid,x);else qry(k<<|,mid+,r,x);
  31. }
  32. int main()
  33. {
  34. int T;scanf("%d",&T);
  35. n=;//看清范围!
  36. while (T--)
  37. {
  38. scanf("%s",s);
  39. if (s[]=='P')
  40. {
  41. scanf("%lf%lf",&b,&k);
  42. add(,,n,b-k,k);
  43. }else {
  44. scanf("%d",&x);ans=;
  45. qry(,,n,x);
  46. printf("%d\n",(int)(ans/100.0));
  47. }
  48. }
  49. return ;
  50. }

题解:李超树

李超树的一个特点是标记永久化。可以求解有关直线、线段、折线的一系列问题。

每个区间[l,r]保存在x=mid时最高的一条直线。

插入:分类讨论斜率的大小关系和当前区间直线和插入直线的交点。

设Tk为当前区间直线的斜率,k为插入直线的斜率。当Tk>k时,如果交点在mid左边,那么处理左区间插入直线,右区间不变;如果交点在mid右边,那么Tk=k,左区间被插入直线完全覆盖,处理右区间原区间直线。Tk<k的情况同理。

查询:路径上直线的最大值。

时间复杂度O(nlogn)。

bzoj1568 Blue Mary的更多相关文章

  1. BZOJ-1568: Blue Mary开公司 (李超线段树)

    Description Input 第一行 :一个整数N ,表示方案和询问的总数. 接下来N行,每行开头一个单词“Query”或“Project”. 若单词为Query,则后接一个整数T,表示Blue ...

  2. 【BZOJ1568】[JSOI2008]Blue Mary开公司(李超线段树)

    [BZOJ1568][JSOI2008]Blue Mary开公司(李超线段树) 题面 BZOJ 洛谷 题解 是模板题啊. #include<iostream> #include<cs ...

  3. 【BZOJ1568】[JSOI2008]Blue Mary开公司 线段树

    [BZOJ1568][JSOI2008]Blue Mary开公司 Description Input 第一行 :一个整数N ,表示方案和询问的总数.  接下来N行,每行开头一个单词“Query”或“P ...

  4. 【BZOJ-1568】Blue Mary开公司 李超线段树 (标记永久化)

    1568: [JSOI2008]Blue Mary开公司 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 557  Solved: 192[Submit ...

  5. bzoj千题计划219:bzoj1568: [JSOI2008]Blue Mary开公司

    http://www.lydsy.com/JudgeOnline/problem.php?id=1568 写多了就觉着水了... #include<cstdio> #include< ...

  6. BZOJ1568: [JSOI2008]Blue Mary开公司【李超树】

    Description Input 第一行 :一个整数N ,表示方案和询问的总数. 接下来N行,每行开头一个单词"Query"或"Project". 若单词为Q ...

  7. bzoj1567: [JSOI2008]Blue Mary的战役地图

    将矩阵hash.s[0]忘了弄成0,输出中间过程发现了. hash.sort.判重.大概这样子的步骤吧. #include<cstdio> #include<cstring> ...

  8. 数据结构(线段树):BZOJ 1568 [JSOI2008]Blue Mary开公司

    1568: [JSOI2008]Blue Mary开公司 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 602  Solved: 214[Submit ...

  9. BZOJ 1567: [JSOI2008]Blue Mary的战役地图( 二分答案 + hash )

    二分答案, 然后用哈希去判断... ------------------------------------------------------------------------- #include ...

随机推荐

  1. python数据结构之快速排序

    def quick_sort(nums): if not nums: return [] else: # 这里取第0个数为基点 flag = nums[0] # 小于flag 的放到左边 left = ...

  2. Jmeter+ant

    1.下载 ant,解压到非中文目录,并配置环境变量,不会的自行 google 2.将 jmeter 中 extras 子目录里的 ant-jmeter-1.1.1.jar 复制到 ant 中的 lib ...

  3. Shell 编程综合案例

    Shell编程综合案例 Shell也学习了大概的知识,现在这篇文章就大概讲述下如何使用shell编写一个脚本呢?下面就展示一个大家常用的数据库备份案例来进行展示. 需求分析 1)每天凌晨2:10分备份 ...

  4. vue 单元素过渡

    demo <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  5. delphi xe10 手机内部系统相关操作(手机信息、震动、剪贴板、键盘、电话、拨号)

    //获取手机信息 function GetPhoneInfo(): string; Var TelephonyManager: JTelephonyManager; TelephonyServiceN ...

  6. java 直接调用micorosoft office (2003-2007和2010版本)中excel中计算函数

    主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx 读取excel和MySQL相关: java的poi技 ...

  7. Spring-Security (学习记录一)--登录

    目录 创建maven工程 1. 在pom.xml中加入相关jar包的配置 2.添加spring-security.xml文件 3.新建admin和user文件夹 4.配置web.xml文件 5.访问 ...

  8. Python中将dict转换为kwargs

    Python中将dict转换为kwargs 我们都知道kwargs是变长kv参数,能否将dict转换成kwargs. 在python调用函数的时候func(**{'type'='event'}),可以 ...

  9. mac 安装配置使用 mongoldb

    mac 安装配置使用 mongoldb 安装和配置 brew install mongos brew install mongo # 密码就是用户的密码 # 配置数据文件 //如果不配置会出现错误62 ...

  10. webpack3

    6月20号webpack推出了3.0版本,官方也发布了公告.根据公告介绍,webpack团队将未来版本的改动聚焦在社区提出的功能需求,同时将保持一个快速.稳定的发布节奏.本文主要依据公告内容,简单介绍 ...