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. 小明一开始有一个空的花 ...
随机推荐
- Find a way--hdu2612
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2612 广搜题 注意:可能存在一个@两人都不能达到: 3 3 Y#@ .M# @.. #include ...
- CF1044B Intersecting Subtrees 构造+树论
正解:构造 解题报告: 传送门 又是一道交互题!爱了爱了! 这题真的,极妙!非常神仙!就非常非常思维题! 直接说解法了吼 说起来实在是简单鸭 就是先问一个对方的联通块中的一个点在我这儿的编号,记为x ...
- 洛谷P3209平面图判定 [HNOI2010] 2-sat
正解:2-sat(并茶几/强连通分量 解题报告: 传送门w 难受死了,连WA5次,正确率又-=INF了QAQ 然后先说下这题怎么做再来吐槽自己QAQ 首先这题其实和NOIp2010的关押罪犯挺像的,然 ...
- PULL解析学习
学习过程 安卓中有三种对XML解析的方式,这个众所周知,DOM,SAX,PULL 其中被推荐的方法是PULL,说是非常简单,但从一开始接触就觉得比较迷惑,总是云里雾里的感觉,甚至在自己写出了一个能 ...
- 启动HDFS
$cd /app/hadoop/hadoop-2.2.0/sbin $./start-dfs.sh
- 【Loadrunner】【浙江移动项目手写代码】代码备份
vuser_init(){ lr_start_transaction("login"); web_url("10.78.224.136:8080" ...
- [LeetCode] 42. Trapping Rain Water_hard tag: Two Pointers
Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...
- 使用fiddler对手机APP进行抓包
在做手机或移动端APP的接口测试时,需要从开发人员那里获取接口文档,接口文档应该包括完整的功能接口.接口请求方式.接口请求URL.接口请求参数.接口返回参数.如果当前项目没有接口文档,则可以使用fid ...
- 筛选DataTable中的数据
DataTable dt = bll.GetTable(); //查询数据 DataTable newdt = new DataTable(); //一个新的table来保存筛选的记录 newdt = ...
- 一个新人对于DW标签的理解
标签呢分为 一.一般标签 一般标签内又分为 ① 格式控制标签 格式控制标签的书写格式是: <font .....></font> 以font为开头以/font为结尾 font ...