luogu P2073 送花 线段树
思路&心路
一眼认定沙比提
写的比较慢,写了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 送花 线段树的更多相关文章
- [Luogu] 可持久化线段树 1(主席树)
https://www.luogu.org/problemnew/show/P3834 #include<cstdio> #include<iostream> #include ...
- Luogu P5280 [ZJOI2019]线段树
送我退役的神题,但不得不说是ZJOIDay1最可做的一题了 先说一下考场的ZZ想法以及出来后YY的优化版吧 首先发现每次操作其实就是统计出增加的节点个数(原来的不会消失) 所以我们只要统计出线段树上每 ...
- luogu 1712 区间(线段树+尺取法)
题意:给出n个区间,求选择一些区间,使得一个点被覆盖的次数超过m次,最小的花费.花费指的是选择的区间中最大长度减去最小长度. 坐标值这么大,n比较小,显然需要离散化,需要一个技巧,把区间转化为半开半闭 ...
- Luogu P3960 列队 线段树
题面 线段树入门题. 我们考虑线段树来维护这个矩阵. 首先我们先定n+1棵线段树前n棵维护每行前m-1个同学中没有离队过的同学,还有一棵维护第m列中没有离队过的同学.再定n+1棵线段树前n棵线段树维护 ...
- Luogu P1471 方差 线段树
那是上上周...也是重构了四遍...后来GG了...今天又拾起,搞了搞终于过了... 好吧就是个线段树,公式懒得推了https://www.cnblogs.com/Jackpei/p/10693561 ...
- Luogu P2073 送花
权值线段树的模板题 然而AC后才发现,可以用\(\tt{set}\)水过-- 权值线段树类似于用线段树来实现平衡树的一些操作,代码实现还是比较方便的 #include<iostream> ...
- 【题解】Luogu P2073 送花
原题传送门 这题需要用到Splay 我们用一棵splay维护金钱 考虑c<=1000000 我们珂以把每种价格现在对应的美丽值存在一个a数组中 这样讲有珂能不太清楚qaq,还是对着操作一个一个讲 ...
- Luogu P2073 送花 set
这题...一眼set...但是打了一会儿.. 记录一下每个价格对应的美丽度,顺便充当vis数组,如果美丽度不为0,说明set里已经有了... 删除好说,删*s.begin()和*--s.end()就好 ...
- 洛谷P2073 送花 [2017年6月计划 线段树01]
P2073 送花 题目背景 小明准备给小红送一束花,以表达他对小红的爱意.他在花店看中了一些花,准备用它们包成花束. 题目描述 这些花都很漂亮,每朵花有一个美丽值W,价格为C. 小明一开始有一个空的花 ...
随机推荐
- 如何删除word中多余的空格和空行
去除word中多余的空格及空行 一.去掉表格和格式 为了版面的整齐,网页文档都是以表格的形式存在的,只是一般情况下表格的颜色被设为无色或表格宽度被设为0,所以我们在网页上看不到表格.另外,网 页文档中 ...
- Borg Maze---poj3026最小生成树+bfs
题目链接:http://poj.org/problem?id=3026 题意:可以理解为给你一个地图上面有S和A的表示一个一个的点,#表示墙,所以需要我们用bfs来计算各点之间的距离: b[i][j] ...
- 食物链--poj1182(并查集含有关系)
http://poj.org/problem?id=1182 题意应该就不用说了 再次回到食物链这道题,自己写了一遍,一直wa...原因竟然是不能用多实例,我也是醉了,但是我真的彻底的理解了,那 ...
- startuml 2.6注册
参考:http://bbs.chinapyg.com/thread-79022-1-1.html 各平台版本均适用,本文更改的为Mac版本. 1,打开对应 mac版本的安装包位置,在对应目录/App ...
- 如何bitbucket上删除项目
老外网页操作习惯不同,删除项目的按钮,我花了半天,突然瞟到delete,如下图(真他妈的隐蔽,记住这2017/3/7):
- CSS表单设计
今天我们开始学习<十天学会web标准(div+css)>的css表单设计,包含以下内容和知识点: 改变文本框和文本域样式 用图片美化按钮 改变下拉列表样式 用label标签提升用户体验 一 ...
- 交换机-查看mac地址表
1.使用交换机命令行 en 或者 enable 进入特权模式 Switch> Switch>en Switch# Switch# 2.查看交换机中的MAC地址表 Switch#sh ...
- MySQL check table/optimize table/analyze table/REPAIR TABLE
MySQL check table/optimize table/analyze table/REPAIR TABLE 转自:https://www.cnblogs.com/datastack/p/3 ...
- hadoop备战:yarn框架的简单介绍(mapreduce2)
新 Hadoop Yarn 框架原理及运作机制 重构根本的思想是将 JobTracker 两个基本的功能分离成单独的组件,这两个功能是资源管理和任务调度 / 监控.新的资源管理器全局管理全部应用程序计 ...
- android 6.0之后动态获取权限
Android 6.0 动态权限申请 1. 概述 Android 6.0 (API 23) 之前应用的权限在安装时全部授予,运行时应用不再需要询问用户.在 Android 6.0 或更高版本对权限 ...