首页 > 其他分享 >数据结构杂题选做

数据结构杂题选做

时间:2022-12-15 22:02:39浏览次数:57  
标签:颜色 线段 合并 区间 数据结构 杂题 dis

好像数据结构也没什么专项,那就全塞一起吧(大雾
好像wind_whisper神仙今天留的题也没什么专项。

P1972 [SDOI2009] HH的项链

居然没做过的“经典题”++。怎么到处都是经典题捏
一个区间内的相同颜色可以只考虑最右边的那个。把询问离线按右端点排序,每次遇到同一颜色 \(a_i\) 再次出现,则 \(add(i,1),add(lst_i,-1)\),即删除上一次的贡献。
那么一边维护一边更新答案,答案就是 \([l,r]\) 的区间和。

P4113 [HEOI2012]采花

题意大概是数区间内出现超过 \(1\) 次的颜色数。采取上题的方法,同时记录 \(lst_i\) 和 \(lstlst_i\),在加入新颜色时撤销掉 \(lstlst_i\) 的贡献。那这样求出来的答案是 大于2次颜色数*2+只有一次颜色数。
于是再维护一个原版的区间颜色数,把它们相减一下就好了qwq

P5327 [ZJOI2019]语言

撞上了前几天学线段树合并做的例题,好诶() 当时没写博客,顺路来补个档qwq
树上路径覆盖问题,首先考虑树上差分。把一次“普及语言”拆成从节点到根的单点修改。
考虑这样一个性质:对于树上按 \(dfn\) 序排列的点集 \(S=a1,a2...a_n\) ,它们构成连通块(?)的边数是 (我不知道是不是这么叫

\[\frac{dis_{a_1,a_2}+dis_{a_2,a_3}+...+dis_{a_{n-1},a_n}+dis_{a_n,a_1}}{2} \]

依旧感性证明一下:因为已经把点按 \(dfn\) 序排列,上述柿子的路径并就经过联通块上的每条边恰好两次。
这个东西是可以线段树维护的。至于怎么合并两个区间,还需记录区间内最靠左/最靠右的点。
注意就是 \(dis_{r,l}\) 不用维护进去 不然咋合并,于是线段树的问题解决了。当前线段树根节点的值就是子树内能与 \(a_i\) 共通语言的人数。
把整棵线段树往上传递,线段树合并一下就好了。
写了一上午,不难理解但真的难调。

P3960 [NOIP2017 提高组] 列队

这题 wzh 老师讲过诶。可是他讲的时候我连树状数组线段树都还不会诶。

标签:颜色,线段,合并,区间,数据结构,杂题,dis
From: https://www.cnblogs.com/ying-xue/p/16986096.html

相关文章

  • 分智慧果 - 2021算法与数据结构实验题
    算法与数据结构实验题8.19分智慧果题目内容★实验任务老师准备把一筐智慧果分给班上的同学,第i个同学(从1开始编号)分到\(a_i\)个智慧果。Bonez(编号为1)是个自私的......
  • 【数据结构实践】从0到1带你利用Python实现自定义集合
    前言集合(简称集)是数学中一个基本概念,我们应该都比较熟悉,不管是生活中,还是数学上,我们都频繁地接触到。集合在数学领域具有无可比拟的特殊重要性。一定范围的,确定的,可以......
  • 【数据结构实践】手把手带你实现 Python 自定义数组
    引言无论是任何语言,数组或者类似数组的数据结构永远是计算机编程语言不可或缺的基本数据结构,有了数组的存在更有利于我们的程序对数据的存储和操作.本文将从面向对象的入手......
  • DP 杂题选做
    概率期望DP学习笔记树形DP学习笔记其余就不具体分类了。P1220关路灯题解说这是区间DP经典题,但我以前居然没听说过,这下尴尬了。设\(f_{i,j,0/1}\)表示关掉区......
  • 数据结构学习笔记 第一章
    一、为什么要写博客?前段时间听过一个在学术界卓有成就的学长谈他的学习、科研经验,他讲到“很多学生往往只重视学习或者科研的成果,却忽视了学习的过程······对于......
  • next|nextval数组|考研数据结构
    视频https://www.bilibili.com/video/BV16a411D7Us/?spm_id_from=333.788.recommend_more_video.0&vd_source=ad3a9ab185a417fd3a4d417051c32c65步骤将字符串从1开始递......
  • 数据结构 线索二叉树
    一、线索二叉树的原理    通过考察各种二叉链表,不管儿叉树的形态如何,空链域的个数总是多过非空链域的个数。准确的说,n各结点的二叉链表共有2n个链域,非空链域为n-1个,......
  • 对前端数据结构与算法的研究----------------引用
         1.递归      递归就是自己调自己,递归在前端里面算是一种比较常用的算法。假设现在有一堆数据要处理,要实现上一次请求完成了,才能去调下一个请求。一......
  • 复杂数据结构的解析
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><metaname="viewport"co......
  • Java数据结构之栈和队列
    原文链接:https://blog.csdn.net/fear_wolf/article/details/127459611文章目录一、栈(Stack)(一)概念(二)栈的使用(三)栈的模拟实现(四)问题思考1.栈,虚拟机栈,栈帧有什么区别?2.单链......