- 博客(31)
- 收藏
- 关注
原创 SAM 笔记
后缀自动机 SAM\text{SAM}SAM .仅为学习笔记,思路会跟博客 后缀自动机(SAM)学习笔记 - zjp_shadow - 博客园 比较类似 .定义 endpos(t)endpos(t)endpos(t) 为子串 ttt 在 sss 中出现过的所有结束位置的并 .阅读下文时建议将 状态 看成是 endposendposendpos 的一个集合 .有时也会用 parent树\text{parent树}parent树 来代替 后缀树\text{后缀树}后缀树 .Lemma对于两个子串
2022-01-22 14:37:53
205
原创 计数好帮手 生成函数
计数好帮手 生成函数OGF记数列 {ai}\{a_i\}{ai} 的生成函数为 ∑k=0∞akxk\sum\limits_{k=0}^{\infty} a_kx^kk=0∑∞akxk .常用的生成函数有11−x=1+x+x2+…=∑k=0∞xk\frac{1}{1-x}=1+x+x^2+\ldots =\sum\limits_{k=0}^{\infty}x_k1−x1=1+x+x2+…=k=0∑∞xk .11−xn=1+xn+x2n+…=∑k=0∞xkn\frac{1}{1-x^n}
2021-11-26 21:29:09
267
原创 [2020普转提七连测day7]玩具
我tm一个普转提高的题这么难…简化题意:给出nnn个数和ttt组询问,每次询问给出l,r,k,wl,r,k,wl,r,k,w,问对于每个询问能否找出一段区间完全包含在[l,r][l,r][l,r]内且区间和是kkk的倍数.若可行则分数加上www,否则减去www.区间和想到前缀和.则问题等价于∀i∈[1,t]\forall i\in[1,t]∀i∈[1,t],问sum[r]−sum[l]=kx , x∈N∗ , l∈[li−1,ri−1] ,&nbs
2021-09-08 21:19:20
142
原创 21.8.28 dp
AB√O(n2)O(n^2)O(n2).C√O(n2)O(n^2)O(n2).D√O(nlogn)O(n\log n)O(nlogn).E√O(n2)O(n^2)O(n2).F√O(nlogn)O(n\log n)O(nlogn).G√O(n2)O(n^2)O(n2).H√O(n3k)O(n^3k)O(n3k).I√O(n)O(n)O(n).J√O(n)O(n)O(n).KL...
2021-08-28 14:40:56
172
原创 快速傅里叶变换
这里有一个问题:我们有两个多项式,分别计作Ai(x),Bj(x)A_{i}(x),B_{j}(x)Ai(x),Bj(x),这里的下标表示对应多项式最高阶数,如Ai(x)A_{i}(x)Ai(x)的最高阶数为iii即:Ai(x)=a0+a1x1+a2x2+……+aixiA_{i}(x)=a_{0}+a_{1}x^{1}+a_{2}x^{2}+……+a_{i}x^{i}Ai(x)=a0+a1x1+a2x2+……+aixiBj(x)=b0+b1x1+b2x2+……+bjxjB_{j}(x)
2021-01-13 18:00:42
254
原创 四边形不等式证明
看网上四边形不等式的证明真的是一言难尽你家不等式的证明难道是直接蹦出来的吗过于气愤,于是写了这篇博客前置芝士:四边形不等式的定义:对于定义域为III的二元函数w(i,j)w(i,j)w(i,j),若满足∀a<b<c<d∈I,w(a,c)+w(b,d)≤w(a,d)+w(b,c)\forall a<b<c<d\in I,w(a,c)+w(b,d)\leq w(a,d)+w(b,c)∀a<b<c<d∈I,w(a,c)+w(b,d)≤w(a,d)+
2021-01-02 21:50:03
393
原创 2020-12-12
#include<iostream>#include<cstdio>#include<algorithm>#define ll long longusing namespace std;const int N = 1000010 , M = 2000010;int h[N] , to[M] , nxt[M] , tot;int n , in[N] , out[N] , idx , len;ll num[N] , c[N] , ans;inline
2020-12-12 17:06:55
66
原创 T1
今日份鸡油时间限制1.00s内存限制125.00MB题目背景严某计划今天出门吃炸鸡。用餐完毕后,满脑鸡油的他突然想到一个问题,现在他让你帮他解决。题目描述严某给了你一棵以1为根,一共有n个结点的树,其中每个节点x均有一个鸡油值ax。如果存在一个二元组(i , j)满足:1. i是j的某一个祖先2. i的鸡油值大于j的鸡油值那这个二元组就会让严某快乐值+1现在严某把这棵树给你,请帮严某算算他的快乐值总和一共是多少。输入格式第一行一个整数n,表示这棵树的总结点数.
2020-12-12 16:48:35
65
原创 T2正解
/*带修莫队+值域分块 */#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;const int N = 2000010 , M = 4000010;int h[N] , to[M] , nxt[M] , tot;int n , m , LEN , tim;in
2020-12-12 16:40:50
102
原创 T2
Y某爱数数时间限制1.00s内存限制256.00MB输入文件suprme_chicken.in输出文件suprme_chicken.out题目描述自从上次 Y某爱树树 一题被 Stm 暴切后,yzh一直闷闷不乐,他觉得这题还是太简单了!yzh又给了你一棵n个结点的树,每个结点有一个鸡油值ai他定义了两种新的操作:1.给出x,y,表示yzh觉得结点x的鸡油值不够好看,于是决定把x的鸡油值改成y2.给出x,表示yzh想知道现在以x为根的子树有多少个结点鸡油值比x的鸡油值小或者等于x的
2020-12-12 16:37:03
84
1
原创 [伪]Ymoi 的题解列表
题目在这里哒关于序列套题,目前尚未找到可靠的解法…Y某的鸡油时间 系列大水题,按鸡油值排序一个个放进去,再维护一个树状数组统计答案就没了跟第一题差不到哪去主要是先将树拍扁,分两次排序第一次统计没有修改前的总答案第二次将修改会产生的新点权一起放进去再重新搞,统计当前点到根的路径以及子树内比修改完后的鸡油值小的点没了一样拍扁然后带修莫队+权值分块,没了至于为什么不能用线段树,主要是因为在转移时要求O(1)否则1e5会爆O(n√n*logn)一格一格从左往右搞
2020-12-10 20:40:18
185
1
原创 [伪]Ymoi 题目大全
序列套题A给你一个长度为n的序列,你需要维护以下两种操作:给出l,r,x,将区间[l.r]内的数乘上x.给出l,r,求区间[l,r]选两个或两个以上不重复数所能组出的最大公因数.对于操作二,形式的说:对于al,al+1,……,ar , 选出p1,p2,……pk, 使得2<=k<=(r-l+1), l<=pi<=r(1<=i<=k),api ≠ apj, 且gcd(ap1,ap2,……,apk)最大数据保证对于操作二,必有l<r.B你有一
2020-12-09 21:02:44
244
原创 带有?的莫队
写莫队如同吸毒,易上头(误莫队是一种用来统计(注意不是维护)区间各种东西的数据结构,由于其短小精悍,拓展性强而让人欲罢不能常用的莫队有四种,其中树上莫队有个前置芝士要点,这里只会简单提一下列表普通莫队带修莫队回滚莫队树上莫队一个一个来讲普通莫队本质思想是继承前面的状态A:举个栗子?Q:假设我们已经处理好了区间[l , r],特殊化的,对于下一个区间[l , r’],我们只需要统计[r + 1 , r’]即可推广到一般,对于下一个区间[l’ , r’],我们处理[l , l’]
2020-11-25 19:56:28
94
原创 2020CSP游记
主要记录下这次的考场心路吧进场前跟机房的hxd一起去的,所以也没感觉到有多紧张。心态自己感觉还是放的蛮宽的。直到进场前一秒都在跟大佬互相调侃,也算是一种放松吧进场后场外跟场内是两码事一进去就感觉到了一股压迫感,隐隐约约感觉有点不太对劲(后来发现这次的题也是真的不对劲),但开考前说不能碰鼠标键盘,也不能敲键盘舒缓压力,就只能呆坐着顺便回忆下知识点开考审题输入密码,点开题面,看到T1标题就觉得不对劲,细细一读发现是道大模拟(我!@#¥%……&),直接跳过看剩下三题解题看完T3T4觉
2020-11-09 09:33:05
226
1
原创 2020.10.18
noip模拟赛题解报告由于为内部赛+版权题,所以不贴题面了T1 【XR-4】歌唱比赛按位处理字符串,如果Z前面有X或者Y则无解(手动模拟一下即可)code:#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int N = 1000010;char s[N];char a[N] , b[N];int n , x;int main(){ sca
2020-10-19 15:03:22
146
原创 分块九题
爆肝一天,终于写完了分块入门由于后半部分参考了dalao的博客,于是码风较前边有点区别第一题区间修改单点查询讲真这题可以用CDQ分治写,而且通俗易懂,但这篇讲的是分块,所以我们只是贴一下代码:CDQ分治版:#include<iostream>#include<cstdio>using namespace std;typedef long long ll;const int N = 1000010;struct nod{ ll x , y; i
2020-09-17 22:04:07
218
原创 平面最近点对
主要介绍分治做法我们按照分治标准“分割-处理-上传”三步来做首先将所有点按x值排序,分治函数solve(l , r)返回下标属于区间[l , r]的所有点的内部最近点对显然当l == r 时不合法,因此我们上传一个+∞假设对于solve(l , r)已经递归处理完了solve(l , mid) 和 solve(mid + 1 , r) (mid = (l + r) >> 1),那接下来就要处理下面这种情况对于点对(A , B),A在[l , mid],且B在[mid + 1 , r]
2020-09-08 09:59:45
233
原创 矩阵快速幂的模板
本博客仅提供代码,原理自行百度一.#include<iostream>#include<cstdio>#include<cstring>using namespace std;typedef long long ll;const int N = 110 , mod = 1e9 + 7;struct Matrix{ ll c[N][N];} res , A;ll n , k;Matrix X(Matrix a , Matrix b){ Mat
2020-09-06 11:44:00
87
原创 离散化+各种神奇科技
主要讲讲我这个蒟蒻的离散化做法(只讲大数据化小数据)首先拷贝一份数据进r数组接着对r数组排序,手动去重塞进num数组里边用的时候二分就好了code:/*给定一个长度为n的序列和m个询问xm,对于每个询问xi输出xi在序列内的排名(如果xi没有出现过则输出-1)*/#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int N = 100010
2020-08-29 08:46:27
189
原创 换根dp中的容斥
主要是在写换根dp时写得脑阔疼一.求树上一个点到其他节点的最大距离转换一下就等价于求以哪一个节点为根时,这棵树的所有节点深度之和最大首先以节点1为根跑一遍dfs1,目的是更新f[N]数组,N为总节点数其中f[x]表示以1为根时,节点x的子树的所有节点深度之和设dp[x]为以x为根的树的所有节点深度之和由于我们一开始是以1为根,那显然dp[1] = f[1]我们进行第二遍dfs2,目的是更新dp数组假设当前节点为x,且dp[x]已经处理完了对于x的一个孩子v,经过推导有:dp[v] =
2020-08-26 11:42:41
127
原创 贼水贼恶心
Acwing 172#include<iostream>#include<cstdio>#include<cstring>using namespace std;struct nod{ int x , y , z;//lie: 0竖着 1横卧 2竖卧} q[1000010];int l , r , pre[1000010];bool fl...
2020-02-28 18:13:36
86
原创 水题
只要是举例map和set的用法二者的区别:map支持下标引用,set不支持set和multiset的区别:set没有重复数据,multiset支持重复数据题目链接:hdu 2648Code:#include<cstdio>#include<iostream>#include<string>#include<map>us...
2020-02-12 09:29:16
138
原创 这,就是并查集
前言:“十年苦琢白玉璧 一朝竞放紫兰花”有的东西只要你肯用心学,总能学的很好。我觉得上面这句话很适合我,毕竟就是凭着这不怕苦的精神,我才从一个连路径压缩都打不对的并查集小白成长成了普通并查集OIER(毕竟我也不是大佬 )并查集是什么?并查集是一种用某个代表来代表整个集合,进而再进行对集合的操作的数据结构比如我们用3来代表{1,2,3,4,5}这个集合,我们就表示成:p[1]=3 p[...
2019-12-30 16:19:16
136
原创 哈希学习笔记
先上一道模板题:维护一个集合,支持如下几种操作:1.“I x”,插入一个数x;2. “Q x”,询问数x是否在集合中出现过; 现在要进行N次操作,对于每个询问操作输出对应的结果。输入格式第一行包含整数N,表示操作数量。接下来N行,每行包含一个操作指令,操作指令为”I x”,”Q x”中的一种。输出格式对于每个询问指令“Q x”,输出一个询问结果,如果x在集合中出现过,则输出“Ye...
2019-12-23 17:32:07
133
原创 链表水题
先贴题目:17.从头到尾打印链表28.用O(1)的时间删除结点29.删除链表中重复的结点33. 链表中倒数第k个节点34. 链表中环的入口结点35. 反转链表36. 合并两个排序的链表以下是核心 vector<int> ans; ListNode *p=head; while(p!=NULL){ an...
2019-12-20 19:03:21
129
原创 前缀和与差分学习笔记
前言:本来在刷 AC Saber里边的区间合并,结果就见到了422.校门口外的树(题目链接在下边)这道题说来也巧,这道题之前我是拿暴力枚举的,结果发现一些很神奇的东西(其实就是瞎想 )为了方便读者,我把题目贴过来:题目:某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0...
2019-11-30 16:40:08
190
2
原创 单调栈学习笔记
单调栈的定义:设st为一个单调栈,那么st里的每一个元素都满足优先序大的较小(或较大)用c++语言写成就是:stack<int> st;/*此处进栈操作*/int a=st.top(),b;st.pop();b=st.top();满足:a<b模板题:Acwing 830.单调栈代码:#include<iostream>#include&l...
2019-11-29 19:54:55
105
原创 Blah数集 题解
题目:Blah数集#include<iostream>#include<cstdio>#include<queue>using namespace std;const int p=1000001;int H[1000001];int Find(int x){ int k=x%p; while(H[k]&&H[k]!=x) k++...
2019-11-27 17:13:19
814
原创 hdu 4841题解
题目链接hdu4841 约瑟夫问题正文这里用了 #include<vector>来优化链式结构其中注意有几点:注意座位上的人自身的编号注意删人时用vector自带删除函数erase来删(用法a.erase(a.begin()+第几位))边界是还剩k个好人以下是全部代码#include<iostream>#include<cstdio>...
2019-11-24 10:02:23
299
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人