題意:給出m個串,問有多少不大於n的串至少包含m個串中的乙個?
思路:首先求出不包含m個串的長度不大於n的串的個數,也就是對應矩陣a:s=a^1+a^2+……a^n。然後就是26+26^2+26^3+……+26^n-s。
const int mod=100000;const int n=105;
struct node
};node a[n];
int e,n,m;
char s[n];
void insert(char s)
p=a[p].next[k];
}a[p].flag=1;
}queueq;
void build()
q.push(p);
}else}}
}u64 b[n][n],d[n][n];
void mul(u64 a[n],u64 b[n])
; for0(k,e) for0(i,e) for0(j,e)
for0(i,e) for0(j,e) b[i][j]=c[i][j];
}u64 getpow(u64 a,u64 b)
return ans;
}void copymatrix(u64 a[n],u64 b[n])
u64 getsum(u64 a,u64 n)
void initmatrix(u64 a[n])
void getpow(u64 a[n],u64 b[n],int n)
}void addmatrix(u64 a[n],u64 b[n])
void print(u64 a[n])
puts("");
}u64 c[n][n],d[n][n],e[n][n];
void getsum(u64 a[n],u64 b[n],int n)
if(n&1)
else
}int main()
u64 sum=getsum(26,n),x=((u64)1)<<63;;
getsum(b,d,n);
for0(i,e) if(!a[i].flag) sum-=d[0][i];
printf("%i64u\n",sum);
}return 0;
}
hdu 2243 考研路茫茫 單詞情結
hdoj 2243 不僅僅是考研路茫茫 a此題的過程也是路茫茫 終於到最後柳暗花明了 a這個題用了3天 或者說用了1個月 因為1個月前就學了kmp和ac自動機 雖然上個月那節課學了kmp匹配演算法 字典樹 ac自動機。當時就聽得一頭霧水 特別是kmp那個失敗指標 或者說成是next fail.有那麼...
HDU 2243 考研路茫茫 單詞情結
這道題和poj2778類似都需要利用end陣列和next陣列的特性構建狀態陣列,不過這裡是需要經過至少乙個目標串,而且長度是不小於l的,即需要長度為1 l時的種數和。然後我們可以求出總數後減去不經過目標串的和,剩下的就是我們要的答案。設總數的陣列為f n 當n為1時答案為26,n為2時為26 26 ...
hdu 2243 考研路茫茫 單詞情結
題目大意 問長度為1 n的串中包含了模式串的串總共有幾個。題目思路 求出長度不大於l的包含模式串的字串數,方法是改求不包含模式串的字串總數,當然先要處理出總的字串個數,可以用矩陣也可以用二分冪和的方法。而求不包含模式串的字串數同樣是構造矩陣,同時還要建立乙個虛結點,儲存長度小於l的不包含模式串的字串...