李超线段树。

GTMD调了一下午。。。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 100500
#define eps 1e-8
#define inf 10000000
using namespace std;
long long n,x,tot=,root,ls[maxn<<],rs[maxn<<];
double s,p,b[maxn<<],k[maxn<<],ans=;
char type[];
bool flag[maxn<<];
void build(long long &now,long long left,long long right)
{
now=++tot;b[now]=k[now]=-inf;
if (left==right) return;
long long mid=(left+right)>>;
build(ls[now],left,mid);
build(rs[now],mid+,right);
}
double f (double s,int pos,double p)
{
return s+(double)(pos-)*p;
}
void modify(long long now,long long left,long long right,double s,double p)
{
double f1,f2,f3,f4;
if (!flag[now])
{
k[now]=p;b[now]=s;flag[now]=true;
return;
}
f1=s+(left-)*p;f2=b[now]+(double)(left-)*k[now];f3=s+(double)(right-)*p;f4=b[now]+(double)(right-)*k[now];
if ((f1<f2) && (f3<f4)) return;
if ((f1>f2) && (f3>f4)) {b[now]=s;k[now]=p;return;}
if (left==right) return;int mid=(left+right)>>;
double r1=f(s,mid,p),r2=f(b[now],mid,k[now]);
if (r1>r2) {swap(s,b[now]);swap(p,k[now]);}
if (!((r1<r2)^(f1>f2))) modify(ls[now],left,mid,s,p);
else modify(rs[now],mid+,right,s,p);
}
void ask(long long now,long long left,long long right,long long pos)
{
ans=max(ans,b[now]+(pos-)*k[now]);
if (left==right) return;
long long mid=(left+right)>>;
if (pos<=mid) ask(ls[now],left,mid,pos);
else ask(rs[now],mid+,right,pos);
}
int main()
{
scanf("%lld",&n);
build(root,,);
for (long long i=;i<=n;i++)
{
scanf("%s",type);
if (type[]=='P')
{
scanf("%lf%lf",&s,&p);
modify(root,,,s,p);
}
else
{
scanf("%lld",&x);ans=;
ask(root,,,x);
printf("%lld\n",(long long)(ans/+eps));
}
}
return ;
}

BZOJ 1568 Blue Mary开公司的更多相关文章

  1. [BZOJ 1568][JSOI2008]Blue Mary开公司

    [BZOJ 1568][JSOI2008]Blue Mary开公司 题意 \(n\) 次操作, 维护一个一次函数集合 \(S\). 有两种操作: 给定 \(b\) 和 \(k\), 向 \(S\) 中 ...

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

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

  3. bzoj 1568 [JSOI2008]Blue Mary开公司 超哥线段树

    [JSOI2008]Blue Mary开公司 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1808  Solved: 639[Submit][Sta ...

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

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

  5. 1568: [JSOI2008]Blue Mary开公司

    1568: [JSOI2008]Blue Mary开公司 题目描述 传送门 题目分析 简单分析可以发现就是不停给出了\(n\)条直线,要求每次给出一条直线后求出所有直线在横坐标为\(x\)时\(y\) ...

  6. 1568: [JSOI2008]Blue Mary开公司(超哥线段树)

    1568: [JSOI2008]Blue Mary开公司 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1198  Solved: 418 Descr ...

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

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

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

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

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

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

随机推荐

  1. Ubuntu配置LAMP+MediaWiki及常见问题

    /*在实验室觉得文档传来传去太麻烦了,干脆在实验室内部搞个wiki算了,于是网上搜集搜集资料,配了一个,由于时间仓促,mediaWiki比较高级的东西没来的及细看,等以后用的时候再完善吧*/ 环境:U ...

  2. Qt之保持GUI响应

    简述 Qter们经常遇到由于耗时操作造成GUI阻塞的问题.其实,这个问题并不难克服,可以采用许多不同的方式,下面我会列举一些可选范围,根据使用情况进行处理. 简述 执行耗时操作 手动事件处理 使用一个 ...

  3. java.lang.IllegalArgumentException: addChild: Child name '/SSHE' is not unique

    错误信息: Caused by: java.lang.IllegalArgumentException: addChild:  Child name '/SSHE' is not unique     ...

  4. 用SQL语句操作数据库

    —―有一天,当你发觉日子特别的艰难,那可能是这次的收获将特别的巨大.—―致那些懈怠的岁月 本章任务: 学生数据库中数据的增加.修改和删除 目标: 1:使用T-SQL向表中插入数据 2:使用T-SQL更 ...

  5. SAP资产变动明细

    *&---------------------------------------------------------------------* *& Report ZFIR027 * ...

  6. CSS从今以后不用发愁

    Bootstrap 简洁.直观.强悍的前端开发框架,让web开发更迅速.简单. Bootstrap3中文文档 Bootstrap2中文文档 http://www.bootcss.com/

  7. PHP+mysql常用类库

    <?php /** * @title: Ekcms mysql类库 * @version: 1.0 * @author: perry <perry@1kyou.com> * @pub ...

  8. easy_install jinja2 mac linux

    error: can't create or remove files in install directory The following error occurred while trying t ...

  9. qml 相关的博客

    http://qt-project.org/wiki/SpaceAppsChallengeResources http://www.ics.com/blog https://www.ics.com/d ...

  10. Java 面向对象编程——第一章 初识Java

      第一章    初识Java 1.  什么是Java? Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以其强安全性.平台无关性.硬件结构无关性.语言简 ...