思路&心路

一眼认定沙比提

写的比较慢,写了1小时吧

开心的交上去

卧槽,只有20?

不服不服,拿着题解的代码去对拍

Emma,<100没问题

100000数据错了,还只是错了一个数据

debug 啊debug啊

以为是数据是0的锅

终于早出了小样例

卧槽,这std不对啊,md

又换了个std

绝望的乱改一通

最后发现是tm vis数组开小了

其实第一遍就能过的

╮(╯▽╰)╭

代码

#include <iostream>
#include <cstdio>
#define ll long long
#define ls rt << 1
#define rs rt << 1 | 1
using namespace std;
const int maxn = 1e5 + 7;
const int maxm = 4e5 + 7;
const int inf = 0x3f3f3f3f; bool vis[maxn*10];
int js,gs;
struct node {
int l, r, ma, mi;
ll meili, jiazhi;
} e[maxm]; int read() {
int x = 0, f = 1; char s = getchar();
for (; s > '9' || s < '0'; s = getchar()) if (s == '-') f = -1;
for (; s >= '0' && s <= '9'; s = getchar()) x = (x << 3) + (x << 1) + s - '0';
return x * f;
} void pushup(int rt) {
e[rt].ma = max(e[ls].ma, e[rs].ma);
e[rt].mi = min(e[ls].mi, e[rs].mi);
e[rt].meili = e[ls].meili + e[rs].meili;
e[rt].jiazhi= e[ls].jiazhi+ e[rs].jiazhi;
} void build(int l, int r, int rt) {
e[rt].l = l,e[rt].r = r,e[rt].mi = inf;
if(l == r) return;
int mid=(l + r) >> 1;
build(l,mid,ls);
build(mid+1,r,rs);
pushup(rt);
} void update(int L, int w, int c, int rt) {
if(e[rt].l == e[rt].r) {
e[rt].meili = w;
e[rt].jiazhi = c;
e[rt].ma = e[rt].mi = c;
return;
}
int mid=(e[rt].l + e[rt].r) >> 1;
if(L <= mid) update(L, w, c, ls);
else update(L, w, c, rs);
pushup(rt);
} void find_min(int rt) {
if(e[rt].l == e[rt].r) {
vis[e[rt].jiazhi] = 0;
e[rt].meili = 0;
e[rt].jiazhi = 0;
e[rt].ma = 0;
e[rt].mi = inf;
return;
}
if(e[ls].mi < e[rs].mi) find_min(ls);
else find_min(rs);
pushup(rt);
} void find_max(int rt) {
if(e[rt].l == e[rt].r) {
vis[e[rt].jiazhi] = 0;
e[rt].meili = 0;
e[rt].jiazhi = 0;
e[rt].ma = 0;
e[rt].mi = inf;
return;
}
if(e[ls].ma > e[rs].ma) find_max(ls);
else find_max(rs);
pushup(rt);
} int main() {
build(1, 1e5, 1);
while (233) {
int tmp = read();
if (tmp == 1) {
int a = read(),b = read();
if(!vis[b]) {
vis[b] = 1;
update(++ js, a, b, 1);
gs++;
}
} else if (tmp == 2) {
if(gs) {
find_max(1);
gs--;
}
} else if (tmp == 3) {
if(gs) {
find_min(1);
gs--;
}
} else break;
}
cout << e[1].meili << " " << e[1].jiazhi << "\n";
return 0;
}

luogu P2073 送花 线段树的更多相关文章

  1. [Luogu] 可持久化线段树 1(主席树)

    https://www.luogu.org/problemnew/show/P3834 #include<cstdio> #include<iostream> #include ...

  2. Luogu P5280 [ZJOI2019]线段树

    送我退役的神题,但不得不说是ZJOIDay1最可做的一题了 先说一下考场的ZZ想法以及出来后YY的优化版吧 首先发现每次操作其实就是统计出增加的节点个数(原来的不会消失) 所以我们只要统计出线段树上每 ...

  3. luogu 1712 区间(线段树+尺取法)

    题意:给出n个区间,求选择一些区间,使得一个点被覆盖的次数超过m次,最小的花费.花费指的是选择的区间中最大长度减去最小长度. 坐标值这么大,n比较小,显然需要离散化,需要一个技巧,把区间转化为半开半闭 ...

  4. Luogu P3960 列队 线段树

    题面 线段树入门题. 我们考虑线段树来维护这个矩阵. 首先我们先定n+1棵线段树前n棵维护每行前m-1个同学中没有离队过的同学,还有一棵维护第m列中没有离队过的同学.再定n+1棵线段树前n棵线段树维护 ...

  5. Luogu P1471 方差 线段树

    那是上上周...也是重构了四遍...后来GG了...今天又拾起,搞了搞终于过了... 好吧就是个线段树,公式懒得推了https://www.cnblogs.com/Jackpei/p/10693561 ...

  6. Luogu P2073 送花

    权值线段树的模板题 然而AC后才发现,可以用\(\tt{set}\)水过-- 权值线段树类似于用线段树来实现平衡树的一些操作,代码实现还是比较方便的 #include<iostream> ...

  7. 【题解】Luogu P2073 送花

    原题传送门 这题需要用到Splay 我们用一棵splay维护金钱 考虑c<=1000000 我们珂以把每种价格现在对应的美丽值存在一个a数组中 这样讲有珂能不太清楚qaq,还是对着操作一个一个讲 ...

  8. Luogu P2073 送花 set

    这题...一眼set...但是打了一会儿.. 记录一下每个价格对应的美丽度,顺便充当vis数组,如果美丽度不为0,说明set里已经有了... 删除好说,删*s.begin()和*--s.end()就好 ...

  9. 洛谷P2073 送花 [2017年6月计划 线段树01]

    P2073 送花 题目背景 小明准备给小红送一束花,以表达他对小红的爱意.他在花店看中了一些花,准备用它们包成花束. 题目描述 这些花都很漂亮,每朵花有一个美丽值W,价格为C. 小明一开始有一个空的花 ...

随机推荐

  1. IE8 select 动态下拉遇到的问题

    发生背景:经QC测试程序一直没问题,到客户测试竟然出现了下拉窗口失效. 检查发现客户用的IE ,360 浏览器都出现一样的问题,据说360是引用IE的核心. 看下IE版本是 8的.....  开发和Q ...

  2. postgreSQL 自增需要使用序列

    postgreSQL 自增需要使用序列 1.使用SERIAL CREATE TABLE users ( id SERIAL4 primary key , name character varying, ...

  3. 2018/03/23 每日一个Linux命令 之 sed

    官方定义: Linux sed命令是利用script来处理文本文件. sed可依照script的指令,来处理.编辑文本文件. Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等 ...

  4. less语言特性(一) —— 变量

    近两年移动市场不断扩大,HTML5也逐渐升温,为了使我们前端工作更有效率,各种框架层出不穷,本章将介绍LESSCSS框架.LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS ...

  5. HPC高性能计算知识: 异构并行计算

    版权声明:很多其它内容,请关注[架构师技术联盟]公众号 https://blog.csdn.net/BtB5e6Nsu1g511Eg5XEg/article/details/80059122 当摩尔定 ...

  6. 怎样解决VMware虚拟机无法连接外网问题

    安装上虚拟机之后,再安装上linux之后,有时会出现ping不通物理机的ip和任何外网包括网关的ip的问题.虚拟机的网卡是桥接状态.下面就让我为大家演示下一下,怎么让虚拟机重新ping通物理机. 工具 ...

  7. sap gui 使用方法, sap logon

    1:打断点:在程序保存并激活之后,可以打内部或外部断点. 如图示. 2:  display 展示程序,不能修改. 3: 查看创建的类的结构,使用more>display object list  ...

  8. myeclipse maven工程调试调试

    1:使用了maven带的tomca插件进行启动.下面讲一下如何进行调试程序 2:在程序中打断点 3:选择>debug>debug configuration 在goals处添加启动命令 4 ...

  9. HTML输入框的默认显示内容

    在某些情况下我们会需要在输入框里默认显示一些内容,比如在登录的时候不在输入框前面显示用户名和密码,直接在输入框里显示,这时只要在input的标签里添加属性  placeholder="用户名 ...

  10. Outlier Detection

    1)正态分布数据,飘出95%的可能是异常值.变量var正态标准化,|var|<=1.96的可能是异常值,further chk needed!large sample better. 对于偏态分 ...