Luogu 4254 [JSOI2008]Blue Mary开公司
BZOJ 1568
学习了一波李超线段树。
这个东西专门用来维护插入一条线段和区间/单点的最大/最小值。
插入的时候讨论:
1、如果当前结点上没有线段,那么直接插入。
2、如果当前结点上的线段一定比要插入的线段优/劣,那么直接覆盖或者返回。
3、如果当前结点上的线段和要插入的线段有交点,那么把优的部分比劣的部分多的线段放在当前结点上,然后把另一条线段下放给那个交点所在的儿子递归处理。
时间复杂度$O(nlogn)$,但是有返回这个操作看上去就很快……
Code:
#include <cstdio>
#include <cstring>
using namespace std;
typedef double db;
typedef long long ll; const int N = 5e4 + ; int n = (int)5e4, qn; template <typename T>
inline void chkMax(T &x, T y) {
if(y > x) x = y;
} namespace SegT {
struct Node {
db lb, lk;
bool cov;
} s[N << ]; #define lc p << 1
#define rc p << 1 | 1
#define mid ((l + r) >> 1)
#define lb s[p].lb
#define lk s[p].lk
#define cov s[p].cov void ins(int p, int l, int r, db b, db k) {
if(!cov) {
lb = b, lk = k, cov = ;
return;
} db l1 = 1.0 * l * k + b, r1 = 1.0 * r * k + b;
db l2 = 1.0 * l * lk + lb, r2 = 1.0 * r * lk + lb; if(l1 >= l2 && r1 >= r2) {
lb = b, lk = k;
return;
}
if(l1 <= l2 && r1 <= r2) return; db x = (b - lb) / (lk - k);
if(l1 > l2) {
if(x > mid) ins(rc, mid + , r, lb, lk), lb = b, lk = k;
else ins(lc, l, mid, b, k);
} else {
/* if(x <= mid) ins(lc, l, mid, lb, lk), lb = b, lk = k;
else ins(rc, mid + 1, r, lb, lk); */
if(x > mid) ins(rc, mid + , r, b, k);
else ins(lc, l, mid, lb, lk), lb = b, lk = k;
}
} db query(int p, int l, int r, int x) {
if(l == r) return lk * x + lb;
db res = lk * x + lb;
if(x <= mid) chkMax(res, query(lc, l, mid, x));
else chkMax(res, query(rc, mid + , r, x));
return res;
} } using namespace SegT; int main() {
scanf("%d", &qn);
for(char op[]; qn--; ) {
scanf("%s", op);
if(op[] == 'P') {
db b, k;
scanf("%lf%lf", &b, &k);
b -= k;
ins(, , n, b, k);
} else {
int x; scanf("%d", &x);
db ans = query(, , n, x);
printf("%lld\n", (ll) (ans / 100.0));
}
}
return ;
}
Luogu 4254 [JSOI2008]Blue Mary开公司的更多相关文章
- [Luogu] P4254 [JSOI2008]Blue Mary开公司
题目背景 Blue Mary 最近在筹备开一家自己的网络公司.由于他缺乏经济头脑,所以先后聘请了若干个金融顾问为他设计经营方案. 题目描述 万事开头难,经营公司更是如此.开始的收益往往是很低的,不过随 ...
- 数据结构(线段树):BZOJ 1568 [JSOI2008]Blue Mary开公司
1568: [JSOI2008]Blue Mary开公司 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 602 Solved: 214[Submit ...
- bzoj千题计划219:bzoj1568: [JSOI2008]Blue Mary开公司
http://www.lydsy.com/JudgeOnline/problem.php?id=1568 写多了就觉着水了... #include<cstdio> #include< ...
- 【BZOJ1568】[JSOI2008]Blue Mary开公司(李超线段树)
[BZOJ1568][JSOI2008]Blue Mary开公司(李超线段树) 题面 BZOJ 洛谷 题解 是模板题啊. #include<iostream> #include<cs ...
- [BZOJ 1568][JSOI2008]Blue Mary开公司
[BZOJ 1568][JSOI2008]Blue Mary开公司 题意 \(n\) 次操作, 维护一个一次函数集合 \(S\). 有两种操作: 给定 \(b\) 和 \(k\), 向 \(S\) 中 ...
- 【BZOJ1568】[JSOI2008]Blue Mary开公司 线段树
[BZOJ1568][JSOI2008]Blue Mary开公司 Description Input 第一行 :一个整数N ,表示方案和询问的总数. 接下来N行,每行开头一个单词“Query”或“P ...
- 1568: [JSOI2008]Blue Mary开公司
1568: [JSOI2008]Blue Mary开公司 题目描述 传送门 题目分析 简单分析可以发现就是不停给出了\(n\)条直线,要求每次给出一条直线后求出所有直线在横坐标为\(x\)时\(y\) ...
- bzoj 1568 [JSOI2008]Blue Mary开公司 超哥线段树
[JSOI2008]Blue Mary开公司 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 1808 Solved: 639[Submit][Sta ...
- 1568: [JSOI2008]Blue Mary开公司(超哥线段树)
1568: [JSOI2008]Blue Mary开公司 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 1198 Solved: 418 Descr ...
随机推荐
- 重装Oracle时出现SID已存在问题的解决办法
重装Oracle时出现SID已存在问题的解决办法 手机打开 注意安装oracle服务器的环境,不稳定导致数据库出现问题,后果很严重! 方法如下: 1.开始->设置->控制面板-&g ...
- 排序算法总结(C#版)
算法质量的衡量标准: 1:时间复杂度:分析关键字比较次数和记录的移动次数: 2:空间复杂度:需要的辅助内存: 3:稳定性:相同的关键字计算后,次序是否不变. 简单排序方法 .直接插入排序 直接插入排序 ...
- 【java规则引擎】drools6.5.0版本api简介
在有些术语使用的时候,我有时候会用KIE项目.KIE引擎或者Drools项目.Drools引擎,大家应该理解KIE是Drools等项目的一个统称,所以在大多数情况下KIE或者特指Drools都是差不多 ...
- 系列文章--SharePoint 2013 Designer 入门教程
SharePoint的使用中,SharePoint Designer是非常重要的工具,我们可以通过Designer设计页面.母版页,维护.管理站点,也可以定制列表表单.数据视图,设计工作流等等.下面总 ...
- Mybatis自动生成实体类、dao接口和mapping映射文件
由于Mybatis是一种半自动的ORM框架,它的工作主要是配置mapping映射文件,为了减少手动书写映射文件,可以利用mybatis生成器,自动生成实体类.dao接口以及它的映射文件,然后直接拷贝到 ...
- STM32GPIO管脚设置
(1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入(3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GP ...
- (转)Android和JavaScript互相调用
Html页面和Java代码结合的方式一般用在界面经常被更改 的情况下,可以讲html放在网络中,软件一打开就会访问网络获取到最新的界面.缺点是会受到网络信号的影响,从而导致访问速度慢. 1.用WebV ...
- 环境无法创建目录,提示Too many links
业务流程需要从客户端下载文件到本地临时目录,然后再解压文件写入相应文件后压缩,现在发现第一步创建本地临时目录就失败了. 去环境上用df命令一看,磁盘分区空间已用99%,还没到100%应该是没问题的.再 ...
- Jvm垃圾回收器详细
1, 串行回收器 1.1, 新生代串行回收器 (1)特点: –它仅仅使用单线程进行垃圾回收 –它是独占式的垃圾回收 –进行垃圾回收时, Java应用程序中的线程都需要暂停(Stop-The-Wo ...
- 关于yii2 REST api 的问题
首先,需要在basic/web/文件夹下添加一个.htaccess文件 这样进入项目就会自动访问index.php文件,url就不会错乱了 <IfModule mod_rewrite.c> ...