2026年2月2日

多回路问题

摘要: /* //多回路问题,升级版为单回路(因为要考虑连通分量的合并),可以看做例题 #include<iostream> #include<cstring> using namespace std; using LL=long long; int n,m; LL dp[2][1<<13]; int ma 阅读全文

posted @ 2026-02-02 21:29 _CENSORED 阅读(1) 评论(0) 推荐(0)

洛谷P10975 Mondriaan's Dream

摘要: DP数组第二维是“轮廓线”的状态,即已知状态和未知状态的分界线 因为很显然,我们不关心已知状态和未知状态具体的方案如第1行第4列的方案数是多少,我们只关心“交界处”即“轮廓线”的方案,所以只需要保存轮廓线的状态即可 其中cur是上一个即已知的状态,nex即下一个未知的状态(当前为轮廓线) 注意,在状 阅读全文

posted @ 2026-02-02 11:18 _CENSORED 阅读(3) 评论(0) 推荐(0)

2026年1月8日

可持久化平衡树

摘要: /* #include<iostream> #include<random> using namespace std; const int INF=2147483647; mt19937 Rand(time(nullptr)); struct node{ node *l,*r; int val,si 阅读全文

posted @ 2026-01-08 16:38 _CENSORED 阅读(26) 评论(0) 推荐(0)

2026年1月6日

可持久化线段树(未完成)

摘要: //#include<iostream> //#include<algorithm> // //using namespace std; // //const int N=2e5+5; //struct node{ // int l,r,cnt; //}; //node tree[N<<5]; // 阅读全文

posted @ 2026-01-06 21:03 _CENSORED 阅读(15) 评论(0) 推荐(0)

可持久化Trie

摘要: /* 题目要求查询区间[l,r]异或和与一个值val的最大异或和 由a1a2...^an ^ a1a2...an=0与a0=a的性质 可以转化为pre[l-1]pre[r]valpre[n],其中valpre[n]是定值,只需要求出pre[l-1]^pre[r]的最大值 显然,如果一个一个求,效率极 阅读全文

posted @ 2026-01-06 21:02 _CENSORED 阅读(24) 评论(0) 推荐(0)

2026年1月3日

后缀数组及其应用LCP(the Longest Common Prefix,最长公共前缀)

摘要: 一、前言 后缀数组,\(suffix\) \(array\),缩写\(sa\),在处理字符串问题中用处很多 二、定义 对于一个字符串S,从其第i位字符开始至最后一位所构成的子串,记作后缀\(suffix(i)\),如对于字符串"\(aabaaaab\)",: 有 suffix(1)="aabaaaa 阅读全文

posted @ 2026-01-03 17:31 _CENSORED 阅读(29) 评论(0) 推荐(0)

2025年10月30日

AC自动机(拓扑排序优化)

摘要: /* 本质:Trie的基础上+KMP的思想(失配指针) 匹配过程中,为了防止失败就前功尽弃,不能利用之前匹配结果的情况,就发明了KMP 如果将KMP运用到高效的Trie上,就可以实现多模式串的匹配 每次匹配失败,就去查找具有最长相同前缀的链 例如,对于abchi和chj这两条链,当我们遍历至i,我们 阅读全文

posted @ 2025-10-30 19:13 _CENSORED 阅读(44) 评论(0) 推荐(0)

2025年10月23日

树状数组求逆序对

摘要: 统计对于每个i<j,求a[i]>a[j]的数量 在每一次更新(update)树状数组时,以元素的值作为树状数组的索引,更新的值为 +1,代表个数。 在每一次获取(query)逆序对数时,存在于树状数组中的元素的索引值都比当前元素的大(逆序遍历), 那么自然获取到的树状数组的值即为索引值比当前元素的大 阅读全文

posted @ 2025-10-23 21:40 _CENSORED 阅读(11) 评论(0) 推荐(0)

2025年9月28日

有旋Treap

摘要: #include<iostream> using namespace std; /*本代码模拟的是小根堆*/ const int N = 5e5+1, INF = 0x3f3f3f3f; struct node { int l, r, val, pos, siz, cnt; //val:结点的值,p 阅读全文

posted @ 2025-09-28 20:24 _CENSORED 阅读(18) 评论(0) 推荐(0)

无旋Treap(struct+指针)实现

摘要: #include <iostream> #include <tuple> using namespace std; struct node { node *l,*r; int val, pri; int cnt; int siz; node(int _val) { val = _val; siz = 阅读全文

posted @ 2025-09-28 20:24 _CENSORED 阅读(8) 评论(1) 推荐(0)

导航