- 博客(6)
- 资源 (12)
- 收藏
- 关注
原创 hdu4622 后缀自动机 模板
抄来的代码#include #include #include #include using namespace std;#define N 5050struct Node{ int step; Node *pre,*nxt[26]; void clear() { step=0; pre=NULL;
2013-10-23 22:31:37 2111
原创 POJ 2185 KMP
求循环节长度直接len-f[len]注意可能循环节长度不超过R,C#include #include #include using namespace std;#define N 100500int vis[N];int getfail(char *s,int *f){ f[0]=f[1]=0; int len=strlen(s); for(in
2013-10-20 23:12:48 757
原创 hdu4609 FFT+计数 经典
用FFT并去重可以算出任意拿出两个不同的木头a,b,长度为a+b=i的方案数cnt[i]木头长度作为指数,对应的木头数量为值,构造多项式,相当于两个多项式相乘这个过程把拿出两个相同的木头a和a的情况也算进去了,所以要减去,取出a和b,与取出b和a相同,要除以2枚举第三边,假如按算a+b>c的方案数这种思维,要去重,比如把b+c>a,a+c>b,a+b>a也算进去了,很麻烦不如枚举第
2013-10-11 18:54:10 3011 1
原创 hdu1402 大数相乘 快速傅里叶变换FFT
FFT入门题,FFT模板#include #include #include #include #include #include using namespace std;#define N 50500*2const double PI=acos(-1.0);struct Vir{ double re,im; Vir(double _re=0.,doub
2013-10-11 11:08:50 6965
原创 sgu 422 Fast Typing 概率题DP
d[i]表示从i到n正确完成的最小期望倒着推,考虑到从i之后的某状态又能回到iP(i,j)=(1-a[i])*(1-a[i+1])*...*(1-a[j])方程:d[i]=min{ (k-i+1)+t+sigma( P(i,j-1)*a[j]*(k-j+1+d[j]) )+sigma( P(i,j)*d[i+1] ) } (i+1移动到某位置k(k在i~n)之后看屏幕,返回i~
2013-10-06 20:40:07 1146
原创 hdu2920 字符串哈希
模式串中#,*把它分成一截截,当某一截在S串中多个位置能找到匹配,找第一个匹配点,贪心因为当中间有#,*,可以利用它跳过一些字符,当遇到#,先跳过一个字符,其他的一截截贪心去找到匹配位置,若最后剩余偶数个字符,则match第一截和最后一截如果是非#和*,必须严格匹配找来的哈希写法#include #include #include #include #include
2013-10-06 00:46:49 1338
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人