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 ...
随机推荐
- LG3628 [APIO2010]特别行动队
题意 你有一支由 n 名预备役士兵组成的部队,士兵从 1 到 n 编号,要将他们拆分 成若干特别行动队调入战场.出于默契的考虑,同一支特别行动队中队员的编号 应该连续,即为形如(i, i + 1, . ...
- RabbitMQ之Consumer消费模式(Push & Pull)
版权声明:本文为博主原创文章,未经博主朱小厮允许不得转载. https://blog.csdn.net/u013256816/article/details/62890189概述消息中间件有很多种,进 ...
- Windows下安装Object C开发环境,及Hello Word(转)
Windows下安装Object C开发环境,及Hello Word 最近想学习iphone开发,但是由于没有c基础,只有java基础.所以先从基础学习,首先是搭建环境,目前手头没有mac机子,只能先 ...
- Python基础-变量作用域
1.函数作用域介绍 函数作用域 Python中函数作用域分为4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局 ...
- Google Cloud VM上在线扩硬盘
Google Cloud VM是可以在线扩展Disk的大小的. 一.创建VM和磁盘 比如我有一台VM,附加了一块Disk,大小是120GB.如下图: 在VM中进行格式化: mkfs.ext4 -F / ...
- linux 下SPI通信注意事项(待续)
一.2台Linux设备之间使用SPI通信 1.标准Linux只支持Master 模式.但是可以在驱动中修改为Slave模式: 2.硬件SPI可能支持Slave模式,也可能不支持.这个要提前确认好: 3 ...
- 分布式缓存系统 Memcached 数据存储slab与hashtable
缓存数据以item为基本单元,以双链表形式存放在对应级别大小的slabclass结构的chunk中.同时该item还存放在链式hashtable中bucket中,用于提供快速查找的索引. 首先是理解缓 ...
- 多线程博文地址 http://www.cnblogs.com/nokiaguy/archive/2008/07/13/1241817.html
http://www.cnblogs.com/nokiaguy/archive/2008/07/13/1241817.html
- 关于XSS漏洞的简介以及分类
不得不说注入的时代已经过去了,最近xss貌似比较热门.我就去恶补了一下,我表示我只是菜鸟,对xss不了解.所以从最基本的学起. 什么xss漏洞? 一.XSS攻击简介 作为一种HTML注入攻击,XSS攻 ...
- 深度剖析collections模块
namedtuple OrderedDict deque tuple defaultdict Counter ChainMap