【GDOI2019模拟2019.4.13】数据结构

GDOI2019 游记 第四年省选了,但是没有这么紧张过,毕竟,已经是高中生了。 Day -? 从北京集训回来,在家睡了几天滚回学校。 跟dcx出了套模拟赛大受好评(雾)。 出完比赛又回家睡觉了。 Day -1 晚上紧张的不得了,跟妈妈去商场走了一会。听听歌,感觉放松了一点。冷鸟的歌声真好听。 很难想开,现在的政策扑朔迷离,要是今年省选挂了,一年的努力就白费了。 Day 0 今年省选在石门,离家很近。 傍晚到了酒店,见到... 阅读详情

Description:

在这里插入图片描述
1<=n,m<=1e5

时限:-O2,1s
空限:128MB

题解:

把询问区间的左端点视为x,右端点视为y。

转换模型后不难发现就是对二维平面上一些东西做一个东西。

设s表示一段时间内这个区间和的增量,v表示和的增量的历史版本最小值(v>=0)。

这个玩意显然是可以合并的,即有两个相邻的时间段的s和v,就可以合并出新的。

那么用二维线段树去维护这个吗?

空间爆了,且常数巨大。

所以可以用KD-tree维护

Code:

#include<cstdio>
#include<cstring>
#include<algorithm>
#define fo(i, x, y) for(int i = x, B = y; i <= B; i ++)
#define fd(i, x, y) for(int i = x, B = y; i >= B; i --)
#define pp printf
#define ll long long
using namespace std;

const int N = 1e5 + 5;

int n, m, a[N], aa[N];
ll sa[N];

struct nod {
	int op, x, y;
} b[N];

struct P {
	int d[2], i;
} c[N]; int c0;

int D;

int cmp(P a, P b) {
	return a.d[D] < b.d[D];
}

struct hh {
	int l, r;
	int d[2], mx[2], mi[2];
	ll s, v, ls, lv;
} t[N];

int rt;

int To[N];

void mer(hh &a, hh b) {
	fo(j, 0, 1) a.mi[j] = min(a.mi[j], b.mi[j]), a.mx[j] = max(a.mx[j], b.mx[j]);
}
void bt(int &i, int x, int y) {
	int m = x + y >> 1; i = m;
	nth_element(c + x, c + m, c + y + 1, cmp);
	fo(j, 0, 1) t[i].mx[j] = t[i].mi[j] = t[i].d[j] = c[m].d[j];
	To[c[m].i] = m;
	D ^= 1;
	if(x < m) bt(t[i].l, x, m - 1), mer(t[i], t[t[i].l]);
	if(m < y) bt(t[i].r, m + 1, y), mer(t[i], t[t[i].r]);
	D ^= 1;
}

int pl, pr, px, py;
ll ps, pv;

void add(ll &s, ll &v, ll ss, ll vv) {
	v = min(v, s + vv);
	s += ss;
}
void down(int i) {
	if(t[i].ls || t[i].lv) {
		add(t[t[i].l].s, t[t[i].l].v, t[i].ls, t[i].lv);
		add(t[t[i].l].ls, t[t[i].l].lv, t[i].ls, t[i].lv);
		add(t[t[i].r].s, t[t[i].r].v, t[i].ls, t[i].lv);
		add(t[t[i].r].ls, t[t[i].r].lv, t[i].ls, t[i].lv);
		t[i].ls = t[i].lv = 0;
	}
}
void add(int i, int x, int y) {
	if(t[i].mx[0] < pl || t[i].mi[0] > pr) return;
	if(t[i].mx[1] < px || t[i].mi[1] > py) return;
	if(t[i].mi[0] >= pl && t[i].mx[0] <= pr)
		if(t[i].mi[1] >= px && t[i].mx[1] <= py) {
			add(t[i].s, t[i].v, ps, pv);
			add(t[i].ls, t[i].lv, ps, pv);
			return;
		}
	if(t[i].d[0] >= pl && t[i].d[0] <= pr)
		if(t[i].d[1] >= px && t[i].d[1] <= py)
			add(t[i].s, t[i].v, ps, pv);
	int m = x + y >> 1; down(i);
	if(x < m) add(t[i].l, x, m - 1);
	if(m < y) add(t[i].r, m + 1, y);
}
void ft(int i, int x, int y) {
	if(y < pl || x > pr) return;
	int m = x + y >> 1;
	if(pl == m) {
		pv = t[i].v; return;
	}
	down(i);
	if(pl < m) ft(t[i].l, x, m - 1); else
	ft(t[i].r, m + 1, y);
}

int main() {
	freopen("ds.in", "r", stdin);
	freopen("ds.out", "w", stdout);
	scanf("%d %d", &n, &m);
	fo(i, 1, n) scanf("%d", &a[i]), sa[i] = sa[i - 1] + a[i], aa[i] = a[i];
	fo(i, 1, m) {
		scanf("%d %d %d", &b[i].op, &b[i].x, &b[i].y);
		if(b[i].op == 2) {
			c0 ++;
			c[c0].i = i;
			c[c0].d[0] = b[i].x;
			c[c0].d[1] = b[i].y;
		}
	}
	bt(rt, 1, c0);
	fo(i, 1, m) {
		if(b[i].op == 1) {
			pl = 1, pr = b[i].x;
			px = b[i].x; py = n;
			ps = b[i].y - a[b[i].x]; pv = min(0ll, ps);
			a[b[i].x] = b[i].y;
			add(rt, 1, c0);
		} else {
			pl = pr = To[i];
			pv = 0;
			ft(rt, 1, c0);
			pp("%lld\n", pv + sa[b[i].y] - sa[b[i].x - 1]);
		}
	}
}
2019年省选day1 2019 全国青少年信息学奥林匹克竞赛 立即下载

相关推荐

群晖NAS变身私有Git服务器:DS218+部署与TortoiseGit客户端实战指南

本文详细介绍了如何将群晖NAS(如DS218+)变身为私有Git服务器,并配置TortoiseGit客户端实现高效代码管理。通过硬件检查、系统更新、Git Server套件安装及权限配置等步骤,帮助开发者在局域网内搭建安全、高速的代码托管环境,特别适合小团队协作。

weixin_29252171的博客 223

KD-Tree中的矩形查询

简单模板题:6121. 【GDOI2019模拟2019.4.13】数据结构 首先建树,一层按x二分,一层按y二分交替。 用algorithm中的nth_element(开始,中间,结束(开),比较函数)就可以把点分成两边。但是两边是乱序的。这是线性的. 然后把每个点控制的矩形区域更新上来,接下来就类似二维线段树了。 据说询问一个矩阵是O(n0.5)O(n^{0.5})O(n0.5)的。证明不显然...

一位蒟蒻的小博客 1057

Upwork数据战争:用爬虫与AI预测垄断订单

当普通自由职业者还在“等客户发需求”时,顶尖玩家已用数据预测客户明天需要什么; 当竞争对手熬夜抢单时,你的爬虫早已自动提交提案—— 这不是科幻,而是2025年的现实! 本文将手把手教你用合法工具搭建“数据战情室”,让每个决策都有万亿级数据支撑!

qq_61813593的博客 981

GDOI2019赛前复习 & 赛后总结

去年的flag 赛前复习 回文树 感觉自己并没有学过一样… 第一次知道回文树的根应该建成一个环。 无论是1做奇数根还是0做奇数根都没有关系。 记得除了偶数根,不应该有其他fail等于奇数根就行。 记得先求新点的fail再给last的转移赋值,这样不需要特判。 1做奇数根: struct pam{ int c[N][26],fail[N],len[N]; char s[N]; int sz; ...

一位蒟蒻的小博客 796

AI 代码赋能短视频带货:服装及多赛道批量内容生产全流程实操

本文聚焦 AI 技术在短视频带货领域的落地应用,以服装赛道为核心,延伸至花卉绿植、图书、茶具等热门领域,系统拆解 AI 工具在选品、素材处理、视频制作(含动态效果、场景搭建)、运营优化等环节的实操方法。针对从业者普遍面临的 “内容生产低效”“无专业技术难出优质视频”“流量运营踩坑” 等痛点,提供从基础工具使用到高阶视频制作的全流程技术方案,助力相关从业者借助 AI 实现批量、高效的短视频内容产出。

m0_67958922的博客 3083

LVDS信号调试必备:5分钟搞懂Xilinx IDELAYE3的TIME模式校准

本文深入解析了在Xilinx Ultrascale系列FPGA中调试LVDS信号时,如何正确使用IDELAYE3的TIME模式进行精密延迟校准。文章重点阐述了IDELAYCTRL、EN_VTC管脚与校准状态机的协同工作机制,揭秘了内置自校准(BISC)中Align_Delay的影响,并提供了从抽头值计算到实际眼图优化的完整实战方案,帮助工程师快速解决高速接口的时序问题。

joy55的博客 216

【GDOI2019模拟2019.3.4】总结

Text 今天来的相对早一些,感觉时间上还行。 看题 T1一开始没有什么思路 T2感觉可能是贪心然后用数据结构维护之类的 T3计算几何 思考T1 认真观察了数据范围以后感觉可以DP,但是复杂度是kn^3的,有66分,似乎还可以前缀和优化 写着写着就发现相当的难写,暴力都调到了10点多,加上前缀和优化恐怕更困难,于是就放弃了去搞后面两题。 第二题思考出了一个性质,每多一个就只会在原来的基础上多一个数...

Never give in. 398

保姆级教程:用Python+OpenCV搞定Orbbec Gemini深度与彩色流对齐(附完整代码)

本文提供了一份详细的Orbbec Gemini深度与彩色流对齐教程,涵盖从环境配置到完整代码实现的每一步。通过解析深度流对齐原理,对比不同对齐模式,并提供工业级应用中的问题排查方法,帮助开发者快速掌握Orbbec Gemini相机的使用技巧。文章还包含进阶应用如点云生成与三维重建的实战代码。

weixin_29090917的博客 470

【GDOI2014模拟】Tree

Wayne 在玩儿一个很有趣的游戏。在游戏中,Wayne 建造了N 个城市,现在他想在这些城市间修一些公路,当然并不是任意两个城市间都能修,为了道路系统的美观,一共只有M 对城市间能修公路,即有若干三元组(Ui, Vi,Ci) 表示Ui 和Vi 间有一条长度为Ci 的双向道路。当然,游戏保证了,若所有道路都修建,那么任意两城市可以互相到达。 Wayne 拥有恰好N - 1 支修建队,每支队伍能

chen1352 660

ArduPilot + Gazebo + Mavros + QGC + 遥控器:从仿真到实机的自主轨迹控制实践

本文详细介绍了基于ArduPilot、Gazebo、Mavros和QGC的无人机自主轨迹控制全流程实践。从仿真环境搭建、多终端协同配置,到遥控器集成与自主圆形轨迹算法实现,提供了完整的代码示例和实机迁移要点,帮助开发者快速掌握无人机自主控制技术。

corn8的博客 940

Win11桌面图标小箭头去除与恢复:解决任务栏关联错误的完整指南

本文提供了一份完整的Win11桌面图标小箭头去除与恢复指南,重点解决了因错误方法导致的任务栏关联错误问题。通过分析注册表中IsShortcut键值与Shell Icons的原理,推荐安全的“替换图标资源法”,并提供了可一键执行的批处理脚本,确保在美化桌面的同时不影响系统功能与默认应用设置。

weixin_29288313的博客 944

[JZOJ6050]【NOI2019模拟2019.3.11】树上四次求和 【数据结构】【树链剖分】【点分治】

Description Solution 一道很简单的题,自己没有想出来,相当不应该 一开始我先想的假如直接询问w(i,j)怎么做,但是完全没有思路(后来发现询问w(i,j)比这题难的多) 首先那个排列a似乎没什么用,那么以下的表示都忽略掉(把x看做a[x]) 先化一波式子,可以得到这个结果 ansk=∑x=1k∑y=xkdis(x,y)×x(k−y+1)ans_k=\sum\limits_{...

Never give in. 492

笔试题-2023-大疆-数字IC设计【纯净题目版】

笔试题-2023-大疆-数字IC设计【纯净题目版】

w0shishabi的博客 2512

【游记】GDOI2024

老年退役选手。NOIP 218 分,GDOI 纯纯旅游。

inferior_hjx的博客 1175

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

GDOI模拟4.11~4.13总结

做完这次比赛,发现自己的得分拿的还是不稳,发现人与人的差距还是相当的大,发现自己还需要突破许多的瓶颈。DAY1: 第一题,一眼就是可以用数据结构来做,但是自测了一下常数可能会爆,但是并不知道O2到底能跑多快,还花了好久的时间卡了卡(其实不卡也能过的),这样大大的浪费了后面的时间。省选4h四道题,必须好好地把握时间。第一题一定要稳,且不能用太久的时间。 第二题,并没有看出来是用线段树做,然后估错了时

Facico的博客 945

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JZOJ 6470. 【GDOI2020模拟02.13】小 B 的环(字符串哈希)

JZOJ 6470. 【GDOI2020模拟02.13】小 B 的环 题解 简化一下题目就是问删去一段子串或一段前缀+后缀,且删去总长度为kkk(k∈[0,n)k\in[0,n)k∈[0,n))能不能使剩下部分首尾相接后相邻字符不同, 方便起见,可以把字符串倍长,这样只通过删去前缀+后缀可以达到一样的目的。 题目是要删去,不妨换种思路,改成保留lll个长度(l∈[1,n]l\in[1,n]l∈[...

ZSJZ_liuzian的博客 454

欢乐纪中A组周六赛【2019.4.13】

前言 做A组被虐好惨 成绩 RankRankRank是有算别人的 RankRankRank PersonPersonPerson ScoreScoreScore AAA BBB CCC 222 巨佬WHF巨佬WHF巨佬WHF 140140140 404040 100100100 000 222 巨佬ZZY巨佬ZZY巨佬ZZY 140140140 404040 10010010...

QuantAsk 552

GDOI2017模拟 第一场(4.11~4.13)

为了更好的迎接省选,又有了GDOI仿真模拟赛,连续三天,每天一场。Day 1第一题,送分题直接跳了。 第二题,一眼看上去像计算几何题,仔细想想好像并不用,一个直观的思路是提取出关键点然后跑spfa,但是关键点之间的连边比较复杂,有点不可打,正解肯定不是这样,一时间有没什么思路就先去看第三题。 第三题,是有关树上两两路径的题,很直接的想到了点剖上面。但是复杂度太大了过不了,但是感觉我的方法有玄学加

YxuanwKeith的博客 735

GDOI7.6~7.15模拟总结

终于分组了,但总感觉哪里不太对劲7.6T1 一眼线性基,然而忘了插入还自己推了一波 这样只有50分,打个表找个规律就可以过了 T2 被计算几何吓死,但仔细一看发现还是可以做的 T3 环套树哈希。。。等有时间再去写吧。。。T2由于没注意到方案的输出也需要有序而只有10分(虽说即使注意到了也只有20分 T3还不想写总结:做GDOI的题也是要有信心,能写的暴力要努力写对7.7T1 树形Dp,附加分

时光真疯狂, 我一路执迷于匆忙. 509

JZOJ 3162. 【GDOI2013模拟2】旋转(推式子+差分)

JZOJ 3162. 【GDOI2013模拟2】旋转 (Standard IO) 题目 Description Alice和Bob发明了一个新的旋转游戏。首先,Bob给定NNN个数组成的序列,并把该序列平均分配成若干个块,每块正好包含KKK个数(KKK能整除NNN)。第一块由第111到第KKK个数构成,第二块由第K+1K+1K+1个数到第2K2K2K个数构成,以此类推。 接着,Bob要求Alice...

ZSJZ_liuzian的博客 446

[JZOJ6057]【GDOI2019模拟2019.3.13】小凯的疑惑

Description 有一张n个点的完全图,每个点有点权xi,边(i,j)的边权为xi xor xj 有q组询问,每次询问给出v,问将所有点权加上v对2^c-1取模之后这张图的最小生成树 n,q&amp;lt;=20000,c&amp;lt;=14 Solution EricHuang出的神仙题 Orz 首先n和q的范围都只有2^c-1,复杂度只和c有关 然后这个暴力相信大家都会,是经典的异或生成树,是建tri...

时光真疯狂, 我一路执迷于匆忙. 373

【GDOI2019模拟2019.3.20】总结

Text 今天的比赛严重的FST了。 T1一开始想了两种不同的模型(实际上都是审题不慎引起的错误),最后都是写了一半把自己叉掉了,浪费了不少时间,后来还是想到了正解,很快就写完了。 T2感觉是一道大数据结构+分类讨论几种情况 一开始还觉得能写一写,后来越想越感觉麻烦 最后写了个n*m的50分,感觉不太保险,又不太想拍,就手测了几个数据,一测就WA,调了一段时间感觉没什么问题了就没有拍 T3感觉可以...

Never give in. 285

【GDOI2018模拟7.8】矩阵

【GDOI2018模拟7.8】矩阵这是一道做法显然的状压DP先看题意, 题目让我们求使得一个已有kk个点被钦定的nm01nm\;01矩阵各行各列异或和皆为1的方案数。有一个数据nn、mm奇偶性不同,用PY想想就知道答案显然为零。1.1.最naivenaive的想法,状压一维,扫另一维,问题就可以在nm2min(n,m)nm2^{min(n,m)}的时间内求解。台下的吃瓜群众们:“然而无论是nn还是m

Jazengm的博客 648

GDOI模拟赛round 1(4.11~13)训练总结

虽然每天都有写,但是一轮下来还是要合起来总结一下。 贴一下每天的总结: Day1 第一题是sb题,很快就扫过了,然后看完剩下的题后,感觉最后一题不可做,然后t3是裸的点分治,但是感觉时间复杂度过不去,就想了两种分治方法,结合起来用好像很快的样子,t2让我想起了JSOI的某题,莫名有深深的恐惧感,于是就没有去想,打了暴力,t3打了1个钟,因为我的方法很多地方都十分注意常数。对拍t3点分治时问题

samjia2000的博客 426

2019.07.12【NOIP提高组】模拟 A 组 题目

...3360. 【NOI2013模拟】苹果树3362. 【NOI2013模拟】数数3397. 【GDOI2014模拟】雨天的尾巴 3360. 【NOI2013模拟】苹果树 3362. 【NOI2013模拟】数数 3397. 【GDOI2014模拟】雨天的尾巴 ...

qq_35786326的博客 271
上一篇: 2019十二省联考(SH) 游记
下一篇: 2019年华南理工大学程序设计竞赛(春季赛)H Parco_Love_GCD
Cold_Chair
博客等级 码龄11年 158粉丝 410原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值