Rk
  • 2024-09-24题解:P5184 [COCI2009-2010#2] PASIJANS
    分析考虑贪心,每次尽量选最小的字符。显然是每次选字典序最小的弹栈。我们要比较的是每个栈的字典序,但是朴素比较是\(O(L)\)的,考虑将它优化到\(O(1)\)。这个时候我们可以先离散化然后套路地将所有串拼一起跑SA。记得在每个串之间加分割符。这样每次比较字典序就变成了\(
  • 2024-09-22最长公共子串 题解
    StatementQ7.1.2.4,时限4s给一个串,定义\(\mathrm{LCS}\)为最长公共子串长度,\(q\)次询问,每次给出\(l,r\),求\[\operatorname{xor}_{i=1}^{r-l+1}\{i+\mathrm{LCS}(S[l,l+i-1],S[l+i-1,r])\}\]\(n\le10^5,q\le30\)Solutiontag:SA,线段树维护分治结构,orzhunction题目就是
  • 2024-09-22BZOJ 3277 串 题解
    Statement给 \(n\) 个串,问每个串有多少子串是所有 \(n\) 个串中至少 \(k\) 个串的子串。Solution1%%注意到\(\text{LCP}\)在后缀排序后一定是连续的一段,包含一个串的区间是连续的先预处理出对于所有左端点\(l\),最左的\(r\)满足\([l..r]\)中出现了至少\(k\)个
  • 2024-09-22BZOJ 4310 跳蚤 题解
    Statement把\(S\)分成不超过\(k\)段,使每段的最大子串中的最大串最小。输出这个串。Solution按排名二分这个串,check中从右往左贪心地划分,需要实现\(O(1)\)比较两个子串大小。#include<bits/stdc++.h>usingnamespacestd;#definerep(i,j,k)for(inti=(j);i<
  • 2024-09-22【2024.09.15】NOIP2024 赛前集训(2)
    【2024.09.15】NOIP2024赛前集训(2)A最大的难点戏剧性地变成了二叉搜索树是什么。先根据已知序列把二叉树建出来,忘了二叉搜索树的移步二叉搜索树&平衡树-OIWiki(oi-wiki.org)根据题意,想到dp计数,\(f[u]\)表示\(u\)子树内的答案,则有转移:\[f[u]=f[lson]\timesf[r
  • 2024-09-20P3224 [HNOI2012] 永无乡
    题意思路用并查集维护连通性,每个集合维护一个平衡树,每次合并两个集合的时候,将一个平衡树的节点一个一个加入到另一个中。这么做不会超时,每次将小的平衡树拆掉放到大的中,可以证明不会超过\(O(\logn)\)次。总时间复杂度\(O(n\log^2n)\)。代码#include<bits/stdc++.h
  • 2024-09-159.15
    写不动了,所以来摆一会总结一下吧菜完了啊开学前跟着学校训练,RED实力,然后发现dbyc除了我大抵是没什么人了罢,zty有水平但是天天PUBG,有点可惜啊,颓完了。话说回来第一场模拟赛就爆丸辣,一定是没给大样例的原因!!!一定不是我都原因!!!(bushi然后就还比较顺利,第二次模拟赛D爆他们。
  • 2024-09-01模板2
    字符串KMPnxt[i]:$b[1:i]$的最长border$b[1:nxt_i]$,且$nxt_i<i$。voidinit(){intp=0;F(i,2,m){while(p&&b[p+1]!=b[i])p=nxt[p];//p+1尝试与i匹配if(b[p+1]==b[i])p++;nxt[i]=p;}}voidkmp(){intp=0;F(i,1,n){
  • 2024-09-01Charles激活
    简介Charles激活码计算激活Help->RegisterCharles添加RegisteredName和计算出的Licensekey点击RegisterJavaimportjava.nio.ByteBuffer;importjava.nio.ByteOrder;importjava.util.Random;importjava.util.Scanner;/***@program:ZK*@de
  • 2024-08-31后缀数组学习笔记
    后缀数组挺好玩的,于是来写后缀数组学习笔记了。什么是后缀数组?后缀数组主要关系到2个数组:\(sa\)和\(rk\)。\(sa[i]\)表示将所有后缀按照字典序从小到大排序,排名第\(i\)的后缀的开头为第\(sa[i]\)个字符。\(rk[i]\)表示将所有后缀按照字典序从小到大排序,后缀开
  • 2024-08-26HIVE SQL 高频(持续更新)
    整理自数据分析常考面试题100题1.连续日期1、为日期排序 row_number()over(partitionbyuse_idorderbydate)asrank2、求日期和排序的差值3、求diff出现最多的次数 max(count(diff))例1:-每个用户一周活跃天数-SELECTuser_id,COUNT(1)ASactiv
  • 2024-08-25P9482 [NOI2023] 字符串 题解
    题目描述\(T\)组数据,给定长为\(n\)的字符串\(s\),\(q\)次询问,给定\(i,r\),求有多少个\(l\)满足:\(1\lel\ler\)。\(s[i:i+l-1]\)字典序小于\(R(s[i+l:i+2l-1])\)。数据范围\(1\leT\le5,1\len,q\le10^5,1\lei+2r-1\len\)。时间限制\(\texttt{1s}\),
  • 2024-08-25后缀数组
    后缀排序chars[N];intn,sa[N],rk[N],ork[N<<1];intbuc[N],id[N],pid[N];boolcmp(inta,intb,intw){returnork[a]==ork[b]&&ork[a+w]==ork[b+w];}voidbuild(){ intm=(1<<17),p=0; for(inti=1;i<=n;i++)buc[rk[i]=s[i]]++; for(in
  • 2024-08-21字符串学习笔记
    扩展kmp令z[i]代表i之后的字符串与原先字符串的最长公共前缀r为目前get到的最大位置,l为对应的左端点很明显的状态转移比如现在枚举到了i这个位置i在[l,r]的范围内,首先S[l,r]==S[1,r-l+1]于是S[i,r]==S[i-l+1,r-l+1]那么显然z[i]=min(z[i-l+1],r-i+1)不能超过长度假设z[
  • 2024-08-20leetcode 1082典型题 ,开窗函数
     示例零: SELECTseller_id,RANK()OVER(ORDERBYSUM(price)DESC)ASr,SUM(price)FROMSales结果:返回一条数据,没有partition关键字,等于是全表做orderby,基于全表做sum排序,其实这个sql有问题.|seller_id|rk|SUM(price)||---------|--|------
  • 2024-08-153_无重复字符的最长子串
    3_无重复字符的最长子串【问题描述】给定一个字符串s,请你找出其中不含有重复字符最长子串的长度。示例:输入:s="abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",所以其长度为3。【算法设计思想】此题为典型的滑动窗口问题,这类问题的主要是处理数组或者字
  • 2024-08-14字符串后缀相关
    1.后缀数组1.1内容我们将一个字符串\(s\)的所有后缀按照字典序从小到大排序得到数组\(sa\),其中\(sa_i\)表示以\(sa_i\)开始的后缀排名是第\(i\)个。这个数组就叫后缀数组(SuffixArray,SA)。考虑到长度各不相同,所以显然是个排列,设数组\(rk\)是这个数组的逆排列。
  • 2024-08-13SA & SAM-dyx
    SA&SAM事先说明:以下所有字符串的下标从1开始SA[OI-WIKI链接](后缀数组简介-OIWiki)是什么SA要干的是这样一件事:有一个字符串s,维护s每个后缀的字典序排名也就是说:我们要对每个\(1\lei\len\),将\(s[i,n]\)按照字典序进行排序,得到两个数组\(sa\)和\(rk\)其中
  • 2024-08-12题解:NOIP2023 天天爱打卡
    题解:NOIP2023天天爱打卡标签:线段树优化dp先考虑一个朴素的dp,\(f[i]\)表示前\(i\)天,第\(i\)天必打卡能得到的最大能量,有转移:\[f[i]=\max_{j=i-k+1}^{i}(val(j,i)-d\times(i-j+1)+\max_{p=1}^{j-2}f[p])\]\(val(j,i)\)表示第\(j\simi\)天完成的挑战.
  • 2024-08-10第四周周报总结
    本周在准备rk,打了几场训练赛然后自己打了几场rk模拟赛,感觉手感还可以然后还打了牛客一场,这道题挺值得补的题解:2022RoboCom世界机器人开发者大赛-本科组(省赛)-whatdo+-博客园(cnblogs.com)2021RoboCom世界机器人开发者大赛-本科组(决赛)-whatdo+-博客园(cnblogs.c
  • 2024-08-09杂题 Solution 速通 #1
    [ICPC2021NanjingR]AncientMagicCircleinTeyvat设\(f_x\)表示钦定至少有\(x\)条边的四元子图个数,由容斥我们有一条边都没有的子图个数是\(f_0-f_1+f_2-f_3+f_4-f_5+f_6\),而所有边都有的个数就是\(f_6\)。作差之后只需要求\(f_0,f_1,f_2,f_3,f_4,f_5\)。子图计数只
  • 2024-08-07并查集详解
    并查集并查集是一种树形数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。具体详解见此并查集本身是真的太板了。。普及-以下的题基本全是板。直接见例题吧:板子一【模板】并查集题目描述如题,现在有一个并查集,你需要完成合并和查询操作。【】输入格式】第
  • 2024-08-04SA 学习笔记
    SA的定义一个字符串有\(n\)个后缀,把\(n\)个后缀按字典序排序,得到数组\(sa\)。\(sa\)的每一个元素是每个后缀的第一个字符的index。\(rk\)数组代表了原先的每个后缀在排序后的位置。例如:eaabd,其后缀为eaabdaabdabdbdd,排序后为aabdabdbddeaabd,\(sa=\{2,3,4,
  • 2024-08-01RK rk-pcba-test新增测试功能
    testcase_info结构体用来存储有关测试用例的信息。#include<stdio.h>#include<stdlib.h>#include<time.h>#include<sys/time.h>//时间相关头文件#include"extra-functions.h"#include"common.h"#include"rt_test.h"#include&q
  • 2024-07-31后缀数组学习笔记
    前言后缀数组(SuffixArray,简称SA)是一种解决某些字符串问题的常用工具。解决这些字符串问题时,经常用后缀数组对问题进行一定的转化成其它的模型,然后套用那个模型的解决方法加以解决原问题。附题单约定本文做以下约定:本文撰写时间跨度较大,有些符号会出现正体、斜体混用的情