![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
题解
文章平均质量分 67
Yanko_7
这个作者很懒,什么都没留下…
展开
-
自用ACM模板
Dinic网络流最大流const int N=400005;#define INF 0x3f3f3f3fstruct Edge{ int to,w,nex;}e[N];int idx=1,sta,endd;int head[N],dis[N];void add(int u,int v,int w){ idx++;e[idx]={v,w,head[u]}; head[u]=idx; idx++;e[idx]={u,0,head[v]}; head[v]=i原创 2022-03-15 22:55:42 · 4178 阅读 · 0 评论 -
广义SAM 多字符串最长公共子串 SPOJ Longest Common Substring II
题目链接SPOJ.com - Problem LCS2对每个串建好trie树,然后对trie建SAM考虑i节点在parent树上两个子节点j和k,那么对于j和k来说,标记在j或k上代表的就是这个节点的所有后缀出现在某个字符串中,故要向上更新其所有后缀,表示对于其所有后缀来说,这些后缀都出现在了某个字符串中。所有向上跳link的时候不是取与,而是取并。#include<bits/stdc++.h>using namespace std;#define se second#define原创 2022-04-05 17:03:37 · 328 阅读 · 0 评论 -
Gym 102606C CDQ分治优化 1D/1D 动态规划的转移
例题Problem - C - Codeforces这是一个三维问题,通过对问题分析,可以得到非常板的式子dp[i]=1+maxj=1i−1dpj[aj<ai][bj<bi]dp[i]=1+max^{i-1}_{j=1}dp_j[a_j<a_i][b_j<b_i]dp[i]=1+maxj=1i−1dpj[aj<ai][bj<bi]再然后就是考虑用CDQ将时间复杂度降下来。对于一个区间lll~rrr内的dp计算,首先通过对第一维的排序就可以保证dp[i]原创 2022-03-21 23:28:30 · 465 阅读 · 0 评论 -
[AHOI2013]差异
题目链接:[Ahoi2013]差异 - 题目 - 黑暗爆炸OJ (darkbzoj.tk)首先考虑另一个问题,两个前缀的最长公共后缀,显然通过next转移取到两个点后,他们的最长公共后缀其实就是parent树上两个点的LCA的len。那么对于这个问题,我们反过来想,也就是说将字符串反过来,那么问题就转换成求任意两点的前缀的最长公共后缀。从parent树上看问题便是统计所有∑len(i)+len(j)−2∗len[k]\sum len(i)+len(j)-2*len[k]∑len(i)+len(j)−2∗原创 2022-03-15 22:41:41 · 408 阅读 · 0 评论