http://www.lydsy.com/JudgeOnline/problem.php?id=1568

写多了就觉着水了。。。

#include<cstdio>
#include<iostream>
#include<algorithm> using namespace std; #define N 100001 double a[N<<],b[N<<]; bool have[N<<]; long long ans; void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} void change(int k,int l,int r,double A,double B)
{
if(!have[k])
{
have[k]=true;
a[k]=A;
b[k]=B;
return;
}
if(l==r)
{
a[k]=max(a[k],A);
return;
}
else
{
if(A>a[k]+(r-l)*b[k])
{
a[k]=A;
b[k]=B;
return;
}
if(a[k]>A+(r-l)*B) return;
int mid=l+r>>;
if(A<a[k])
{
if(A+(mid-l)*B>a[k]+(mid-l)*b[k])
{
change(k<<,l,mid,a[k],b[k]);
a[k]=A;
b[k]=B;
}
else change(k<<|,mid+,r,A+(mid+-l)*B,B);
}
else
{
if(A+(mid-l)*B>a[k]+(mid-l)*b[k])
{
change(k<<|,mid+,r,a[k]+(mid+-l)*b[k],b[k]);
a[k]=A;
b[k]=B;
}
else change(k<<,l,mid,A,B);
}
}
} void query(int k,int l,int r,int p)
{
if(!have[k]) return;
if(l==r)
{
ans=max(ans,(long long)a[k]);
return;
}
ans=max(ans,(long long)(a[k]+(p-l)*b[k]));
int mid=l+r>>;
if(p<=mid) query(k<<,l,mid,p);
else query(k<<|,mid+,r,p);
} int main()
{
int n,x;
char c[];
double s,p;
read(n);
while(n--)
{
scanf("%s",c);
if(c[]=='Q')
{
read(x);
ans=;
query(,,N-,x);
cout<<ans/<<'\n';
}
else
{
scanf("%lf%lf",&s,&p);
change(,,N-,s,p);
}
}
}

1568: [JSOI2008]Blue Mary开公司

Time Limit: 15 Sec  Memory Limit: 162 MB
Submit: 1706  Solved: 593
[Submit][Status][Discuss]

Description

Input

第一行 :一个整数N ,表示方案和询问的总数。 
接下来N行,每行开头一个单词“Query”或“Project”。 
若单词为Query,则后接一个整数T,表示Blue Mary询问第T天的最大收益。 
若单词为Project,则后接两个实数S,P,表示该种设计方案第一天的收益S,以及以后每天比上一天多出的收益P。
1 <= N <= 100000 1 <= T <=50000 0 < P < 100,| S | <= 10^6 
提示:本题读写数据量可能相当巨大,请选手注意选择高效的文件读写方式。

Output

对于每一个Query,输出一个整数,表示询问的答案,并精确到整百元(以百元为单位,
例如:该天最大收益为210或290时,均应该输出2)。没有方案时回答询问要输出0

Sample Input

10
Project 5.10200 0.65000
Project 2.76200 1.43000
Query 4
Query 2
Project 3.80200 1.17000
Query 2
Query 3
Query 1
Project 4.58200 0.91000
Project 5.36200 0.39000

Sample Output

0
0
0
0
0

bzoj千题计划219:bzoj1568: [JSOI2008]Blue Mary开公司的更多相关文章

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

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

  2. BZOJ1568: [JSOI2008]Blue Mary开公司

    可以平衡树或线段树维护斜率来做. 还有一种线段树直接打标记的做法: 线段树每个节点存一条线段作为标记,打标记时如果已有标记,则把占优区间小的那个线段下放. #include<cstdio> ...

  3. 2019.02.11 bzoj1568: [JSOI2008]Blue Mary开公司(线段树)

    传送门 题意简述:维护整体加一条线段,求单点极值. 思路: 直接上李超线段树维护即可. 代码: #include<bits/stdc++.h> #define ri register in ...

  4. [bzoj1568][JSOI2008]Blue Mary开公司——李超线段树

    题目大意 题解 这道题需要用到一种叫做李超线段树的东西.我对于李超线段树,是这样理解的: 给节点打下的标记不进行下传,而是仅仅在需要的时候进行下传,这就是所谓永久化标记. 对于这道题,借用一张图, 这 ...

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 【BZOJ1001】狼抓兔子(网络流)

    [BZOJ1001]狼抓兔子(网络流) 题面 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨, ...

  2. 【NOIP2012】【CJOJ1093】【洛谷1083】借教室

    我写的是不完美算法!!! 题面 Description 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的 ...

  3. golang 详解defer

    什么是defer defer用来声明一个延迟函数,把这个函数放入到一个调用链表上, 当外部的包含方法return之前,返回参数到调用方法之前调用,也可以说是运行到最外层方法体的"}" ...

  4. springboot dubbo filter之依赖注入null

    @Autowiredprivate ICallerRepository callerRepository;...用dubbo提供的ServiceBean即可获取bean,因为该类已经实现了Applic ...

  5. 如何在Win10下安装MySQL 5.7绿色版

    一.背景 系统升级到Win10后准备在本地搭建一个MySQL环境,用于研究学习.在网上找了很多其他人写的经验总结,Step by step的做,不断的遇到问题,没有成功. 最后老老实实的去读Mysql ...

  6. html onclick时间传字符串参数

    经常忘记拼html中onclick事件传字符串引号的问题,所以今天记一下! 简单一句话 外面是"",里面就是'',外边是'',里边就是"".   示例: var ...

  7. lambda表达式封装对数据库的查询

    前言: 1.为什么要封装lambda表达式数据库查询,原因有一下几点: 1.1.在以往的开发中进行数据库表查询时,其实所需要的字段就是其中几个,但是在开发中,开发者往往习惯select * 进行查询, ...

  8. windows下的react-native 开发环境搭建

    本教程用安卓手机作为演示. 首先安装jdk.本教程基于jdk1.8,安装时有一点要特别注意:jdk和jre必须装到不同目录下,否则初始化react-native项目时大概率报tools.jar not ...

  9. 华为/华三交换机snmp配置

    snmp-agent                       /使能snmp服务/snmp-agent local-engineid 000007DB7F000001000049DD   /系统自 ...

  10. js获取元素的滚动高度,和距离顶部的高度

    jq: 获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 : $(window).width(); 获取页面的文档高度 $(doc ...