son
  • 2024-11-21模板
    数据结构线段树2voidbuild(intp,intl,intr){ l(p)=l,r(p)=r; if(l==r)return; intmid=l+r>>1; build(ls(p)=p<<1,l,mid),build(rs(p)=p<<1|1,mid+1,r);}voidpushdown(intp){ sum(ls(p))=(sum(ls(p))*mul(p)+add(p
  • 2024-11-21[NOIP2022] 建造军营
    前言米奇妙妙\(\rm{dp}\),也是高端计数这种题看得懂想不出,还是非常难蚌能不能多想想再去看\(\rm{TJ}\)啊算法注意到除了割边,其他的边都没有影响,显然可以缩\(\rm{e}\)-\(\rm{DCC}\)再进行处理这里发现缩完之后形成一棵树,考虑树形\(\rm{dp}\)这里我有一个误
  • 2024-11-20【学习笔记】线段树合并 & 分裂
    【学习笔记】线段树合并&分裂前置知识:动态开点线段树用来解决一些对区间拆分合并的问题。线段树合并大概可以替代DSU,但是常数略大。对于线段树分裂合并的空间复杂度问题,一般内存要开\(maxq\timest\times\lceil\log_2maxn\rceil\),其中\(maxq\)为询问次数,\(t\)为每
  • 2024-11-15[ABC378G] Everlasting LIDS
    原题链接\(该题运用到了杨表的知识发该篇题解是为了加深对于杨表的理解\)\(发表该篇题解仅用于个人理解感觉洛谷上的题解更好\)洛谷题解传送门\(杨氏矩阵(Youngtableau),又名杨表,是一种常用于表示论和舒伯特演算中的组合对象。\)\(杨表是一种特殊的矩阵。它便于对称群和一
  • 2024-11-14树上启发式合并学习笔记+杂题
    图论系列:前言:欲买桂花同载酒,终不似,少年游。相关题单:戳我一.树上启发式合并前置知识:树的重儿子。1.引入启发式算法是基于人类的经验和直观感觉,对一些算法的优化。(其实就是感觉是对的就是对的),例如并查集的启发式合并,将小集合合并到大集合中。因为在路径压缩的时候,大集合的根
  • 2024-11-13SPT
    \(SPT(Super\Piano\Trick)\)超级钢琴选出\(k\)个最大的区间和,限制区间长度。想到前缀和维护,然后区间最大值,可以确定每个左端点,对应的最大值。维护前\(k\)大想到压堆,但是不可能全都压进去。仍然是考虑对于每个左端点,右端点所在范围确定,那么当前的最大值就是确定的。选完
  • 2024-11-11Educational Codeforces Round 158 (Rated for Div. 2) - VP记录
    A.LineTrip油量必须支持车子通过所有加油站间的空间,还要注意开回来的时候终点不能加油。点击查看代码#include<cstdio>#include<algorithm>usingnamespacestd;constintN=55;intn,x,a[N];intmain(){ intT;scanf("%d",&T); while(T--) { scanf("%d%d",&am
  • 2024-11-11K-D Tree
    K-DTree细节KDT和树套树并非等价,树套树一般是时间\(O(n\log^2n)\),空间\(O(n\logn)\)的,KDT是时间\(O(n\logn+n\sqrtn)\)(修改+查询),空间\(O(n)\)子树递归时,值域越界判断不要像线段树一样写\(L<=mid,R>mid\),而是转到儿子去写,不然会报错,因为一层只判一个维度,另一个维度可能越界,
  • 2024-11-09关于 DP 的非常规优化
    感觉这个东西就是玄学啊,考场上真的有人能想得出来嘛。(还是我太菜了qwq)思想现在见到的有这几种:从\(i\)推到\(i+1\)时状态改变的数量不会太多,直接继承可以优化。可能对答案有贡献的状态不会太多。即通过一些性质来消除掉冗余状态以保证时间复杂度。ABC176FBraveCH
  • 2024-11-09『模拟赛』多校A层冲刺NOIP2024模拟赛20
    RankmissionfailedA.星际联邦由于急着想切题,上来没细看就打了个树状数组上去,果然寄了,然后又各种方式优化,最终还是寄了,只有50pts。正解是学最小生成树时直接跳过的prim和菠萝,但是偏不这么做,而是找性质得出严格\(\mathcal{O(n)}\)的做法。首先比较平凡发现一个点的最
  • 2024-11-09长链剖分
    长链剖分长链剖分在维护有关深度的信息时具有显著优势。定义长链剖分中长儿子为子树内深度最大的儿子,不难使用类似重链剖分的方式求出长儿子:voiddfs1(intu,intf){fa[u]=f,len[u]=1;for(intv:G.e[u]){if(v==f)continue;
  • 2024-11-08zkw 线段树-原理及其扩展
    前言许多算法的本质是统计。线段树用于统计,是沟通原数组与前缀和的桥梁。《统计的力量》清华大学-张昆玮关于线段树前置知识:线段树OIWiki。线段树是一种专门维护区间问题的数据结构。线段树对信息进行二进制化处理并在树形结构上维护,以此让处理速度达到\(O(\log{n})\)
  • 2024-11-06类的三大特性(封装、继承、多态)
    1.封装:封装是指将数据(属性)和行为(方法)捆绑在一起,形成一个对象,并通过公共接口来访问这个对象。封装的目的是保护对象的内部状态,防止外部直接访问和修改对象的数据,确保数据的完整性和程序的安全性。封装的意义:1.将属性和行为作为一个整体,表现在生活中的事物2.将属性和行为加以
  • 2024-11-0420241102
    T1路径注意到颜色出现的顺序并不重要,于是考虑状压,设\(f_{x,S}\)表示从\(x\)开始,经过的颜色集合为\(S\)的方案数。外层枚举路径上经过了几条路径,然后枚举点转移即可。代码#include<iostream>#defineintlonglongusingnamespacestd;intn,m,K;intclr[3000
  • 2024-11-02LCT
    前置知识:Splay和文艺平衡树介绍LinkCutTree,简称LCT,时间复杂度分析细节原splay函数Rotate()中,注意son[z][]的赋值要有限制语句isroot(y),因为z可能是“认父亲不认儿子”的splay根节点的父亲(Splay()中的限制管不到,因为Splay()只考虑父亲,但Rotate()要考虑爷爷)voidRotate(int
  • 2024-11-02平衡树
    Splay技巧/记忆点:1、Rotate()中,使用变量记录位置关系和下标;2、Find()(找元素\(x\)所在位置)减少重复代码;3、求前驱/后继时先把这个数插进去再删掉;4、Splay()父子同侧先翻父亲,再翻儿子,否则翻两边儿子;5、siz[]在Splay()前先Pushup()到树根,这样在Rotate()维护会轻松一点;6、Delet
  • 2024-11-01动态动态规划 & 全局平衡二叉树 小记
    估计这几天是正式学习ddp,所以特写笔记。DDP简介是这样一类技巧,利用广义的矩阵乘法实现单点修改权值,动态查询某个点的DP值关于矩阵乘法,广义矩阵乘法其核心思想是利用矩阵乘法具有结合律(可以使用数据结构维护)的优势序列上的Ddp先看一个例子:最大子段和,显然我们有\(f_
  • 2024-11-01trie树
    顾名思义,trie树是由字典与树的结合体,是一种方便快捷地存储字符串等字符集较小的串集的数据结构(不确定算不算数据结构)而其结构是朴素的。trie树的节点本身并没有特殊的含义,其信息更多体现在边上。如下图这是一颗典型的trie树。例如我们要表示aba这个字符串,我们就从1->2->6->11
  • 2024-10-31SS241031C. 博弈(game)
    SS241031C.博弈(game)题意博弈的规则是,有\(3\)个数字\(x,y,z\),每次可以选择其中两个数字\(x,y\),改成\(x',y'\),满足和不变差严格变小,即\(x+y=x'+y',|x-y|>|x'-y'|\)。无法操作的失败。给你\(n\)个数字,问有多少种选\(3\)个数字的方案使得先手必胜。solution首先可以设
  • 2024-10-30动态规划题解报告
    Findacar注意到矩阵本质上是一个分形,即每次向右下复制当前矩阵,证明考虑归纳法。由此可以知道一个比较好的性质\(a_{i+k,j+k}=a_{i,j}\)其中\(k=2^n\),由于每次是复制加倍,所以横纵坐标都会加上一个\(2^n\),且每次增加的二次幂一定是横纵坐标二进制减一后没有的那一位(证明考虑
  • 2024-10-30【算法】前缀树
    基本内容以树的方式存储字符串的数据结构,方便字符串的查找及判断是否为某一字符串的前缀入门例子PHONELST-PhoneList-洛谷|计算机科学教育新生态题目要求:判断一组字符串中是否存在某一字符串是另一字符串的前缀。例如在{“911”,“91140”,“20”,“912”}中,“911”
  • 2024-10-30vue3知识点:Teleport组件
    @目录五、新的组件2.Teleport案例完整代码本人其他相关文章链接五、新的组件2.Teleport问题:什么是Teleport? 答案:Teleport是一种能够将我们的组件html结构移动到指定位置的技术。<teleportto="移动位置"> <divv-if="isShow"class="mask"> <divclass="dialog"> &l
  • 2024-10-28CF1249F Maximum Weight Subset 题解 / 长链剖分复习
    CF1249FMaximumWeightSubset题解题目大意给定一个\(n\)个节点的树,每个节点有点权\(a_i\)。从中选出若干节点,要求这些点两两之间距离大于给定常数\(k\),使得点权和最大。Solve给出一种线性做法。前置知识:长链剖分优化DP。考虑一个DP:设\(f(u,d)\)表示在\(u\)的子
  • 2024-10-262024-10-26:最长公共后缀查询。用go语言,给定两个字符串数组 wordsContainer 和 wordsQuery,要对每个 wordsQuery[i] 找到一个与其有最长公共后缀的字符串
    2024-10-26:最长公共后缀查询。用go语言,给定两个字符串数组wordsContainer和wordsQuery,要对每个wordsQuery[i]找到一个与其有最长公共后缀的字符串。如果有多个字符串与wordsQuery[i]有相同的最长公共后缀,则返回在wordsContainer中最早出现的那个。最后,返回一个整数数组a