自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lambda QAQ

fmap :: (q -> a) -> f q -> f a

  • 博客(12)
  • 收藏
  • 关注

原创 hihocoder 1387 A Research on The Hundred Family Surnames

题解网址以下为搬运 题意: 给一棵树,每个节点上有个颜色,很多询问,询问两种颜色,问从这两种颜色中各取一个节点,距离最大是多少。 题解:处理出每种颜色的节点们的直径(也就是距离最大的点对)。然后对于两种询问颜色(a,b)(a,b)的直径(au,av)(au,av)和(bu,bv)(bu,bv),答案就是max{dis(au,bu),dis(au,bv),dis(av,bu),dis(a

2016-09-30 17:26:50 513

原创 UVA 1728 Toll Management IV

一个n(n≤104)n(n \le 10^4)个点m(m≤105)m (m \le 10^5)条带权(0≤Ci≤1000)(0 \le C_i \le 1000)边的无向图,给出原图的一个最小生成树(输入的前n−1n-1条边)对于第ii条边,定义AiA_i和BiB_i为在不改变最小生成树形态下增加和减少的最大的值求 ∑i=1mAi×i+Bi×i×i\sum\limits_{i=1}^m A_i \t

2016-09-23 15:08:04 464

原创 hdu 4899 Hero meet devil

给出一个模式串S,|S|≤15S,|S| \le 15问存在多少个长为m,m≤1000m,m\le 1000的字符串TT满足LCS(S,T)=x(0≤x≤|S|)LCS(S,T) = x(0\le x\le|S|)输出|S|+1|S|+1个结果(mod109+7)\pmod{10^9+7}|S||S|表示字符串SS的长度本题中的字符集为A,T,C,GA,T,C,G四个字母算是一个dp of dpdp

2016-09-20 20:37:08 507

原创 Hdu 5895 Mathematician QSC

f(0)=0,f(1)=1,f(n)=f(n−2)+2∗f(n−1)g(n)=∑i=0nf(i)2f(0) = 0, f(1) = 1, f(n) = f(n - 2) + 2 * f(n - 1) \\g(n) = \sum\limits_{i=0}^nf(i)^2, 求 xg(n∗y) mod (s+1)x^{g(n * y)}\ \mathrm{mod}\ (s + 1)首先有一个公式写作xa

2016-09-18 19:51:57 885

原创 Hdu 2896 病毒侵袭

依然是AC自动机模板题注意ASCII码可见字符包括空格应该都能一次敲过去?#include<bits/stdc++.h>using namespace std;const int maxn = 112345,maxLen = 130;int toid(char c){ return c; }queue<int> Q;struct ACMA{ int nex[maxn][maxLen],fa

2016-09-13 09:43:31 274

原创 hdu 2222 Keywords Search

学过SAM回头才看懂AC自动机我真是太弱了问模式串有多少个在给出的模式串中出现过AC自动机模板题#include<bits/stdc++.h>using namespace std;const int maxn = 1123456,maxLen = 26;int toid(char c){ return c - 'a'; }queue<int> Q;struct ACMA{ int nex

2016-09-12 19:49:54 210

原创 bzoj 3238 差异

给出一个长n的字符集为小写字母的字符串,求∑1≤i<j≤nlen(Suffixi)+len(Suffixj)−2×len(lcp(Suffixi,Suffixj))\sum \limits _{1 \le i < j \le n} len(Suffix_i) + len(Suffix_j) - 2 \times len(lcp(Suffix_i,Suffix_j)) SuffixxSuffix_x

2016-09-07 19:35:41 460

原创 SPOJ NSUBSTR

给出一个长25×10425 \times 10 ^ 4 的字符串,定义f(x)f(x)为所有的长xx的子串中出现次数最多的那个的出现次数,求f(1),f(2)...f(strlen)f(1),f(2)...f(strlen)首先对输入的字符串建立SAMSAM然后对于每一个节点所对应的[min,max][min,max]这个区间,用rightright去更新这个区间的maxmax,这样最后的结果就是需

2016-09-06 09:42:41 294

原创 Hdu 5853 Jong Hyok and String

先给出n个模式串,然后有m个询问,每次询问对于一个字符串,和他rightright集相同的字符串的个数既然都rightright集了,显然是一个SAMSAM的题对多串建立SAMSAM然后将询问的字符串放在SAMSAM上runrun就好了要是转移到了nullnull说明答案是0,否则答案就是len[st]−len[fa[st]]len[st] - len[fa[st]]#include<bits/st

2016-09-03 10:17:31 485

原创 SPOJ SUBLEX

求字典序第k大字串SAM的节点和转移所构成的是一个DAG,并且SAM从起点开始的每一条路径都是模式串的一个字串,根据这两个性质在SAM上dfs即可#include<bits/stdc++.h>using namespace std;const int maxn = 91234*2 ,mlen = 26;char tem[maxn];struct Sam{ int len[maxn],fa

2016-09-02 14:50:50 279

原创 bzoj 4516 生成魔咒

因为SAM增量法构造的特点,所以每一次增加节点计算就可以了因为SAM的转移是线性的,所以开个map也是兹辞的#include<bits/stdc++.h>using namespace std;const int maxn = 112345;struct Node{ int len,fa; map<int,int> nex; Node(int _len = 0){

2016-09-02 14:50:03 297

原创 SPOJ LCS

求两个串的最长公共字串后缀自动机模板题#include<bits/stdc++.h>using namespace std;const int maxn = 251234,mlen = 26;int toid(char c){ return c - 'a'; }struct Node{ int len,fa,nex[mlen]; Node(int _len = 0){

2016-09-02 14:49:32 354

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除