自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mr_zys的专栏

点点滴滴的进步,一步一步的前行!

  • 博客(14)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 矩阵相关

本来是刷AC自动机的题目,不过看了n道题说都要用矩阵,所以就看看矩阵,刷刷矩阵入门题。随便写几篇接替报告。   这里就不介绍了,网上的大牛已经讲的很清楚了。        matrix67的博客:点击打开链接        酷行天下的博客:点击打开链接        下面给一点自己的理解        一、矩阵的快速幂               要想解决矩阵快速幂的问题,不妨来研究

2013-07-28 00:56:08 601

原创 Hdu 1757 A Simple Math Problem//矩阵乘法

唉,是一道水题,但是错把b也为a,狂wa。。。   还有每次取模,否则,溢出。    下面是代码: #include #include #define maxn 15 struct node { int m[maxn][maxn]; void init() { memset(m,0,sizeof(m)); } } A,B; int k,m;

2013-07-22 10:27:56 644

原创 Poj 1977 Odd Loving Bakers//矩阵

这道题,推一下关系式就出来了。  下面是代码: #include #include #include #include using namespace std; const int maxn = 100 + 10; string s; char str[maxn]; map Map; struct node { int m[maxn][maxn]; void init()

2013-07-21 21:15:57 658

原创 Hdu 1005 Number Sequence//矩阵快速幂

裸的矩阵乘法加矩阵快速幂   下面是代码: #include #include #define maxn 1010 int A,B,n; struct node { int m[2][2]; void init() { memset(m,0,sizeof(m)); } } a,b; node martix_mul(node a,node b) {

2013-07-21 21:13:57 716

原创 Hdu 3065 病毒侵袭持续中//Aho-Corasick Automaton

这道题题目没说是多case,所以无情wa了半个多小时。囧!AC自动机的水题,下面是代码: #include #include #include #include using namespace std; #define maxn 1010*50 #define maxc 26 int ch[maxn][maxc]; int val[maxn]; int f[maxn]; int cnt; in

2013-07-21 09:26:15 941

原创 Hdu 2896 病毒侵袭//Aho-Corasick 自动机

还是一道裸的AC自动机的题目,但是字符集扩大了。字符都是ASCII码可见字符。不知道什么是字符都是ASCII码可见字符,所以RE了很多次,囧!   下面是代码: #include #include #include using namespace std; const int maxn = 10005; const int maxc = 128; int ch[maxn*6][

2013-07-20 19:36:15 856

原创 Hdu 2222 Keywords Search//Aho-Corasick 自动机

裸的AC 自动机,但是题目没有说明白啊。 keyword 是可以重复的,同时也要就算这些重复的keyword,囧! 下面是代码,将当做AC 自动机的模板吧,以后几天,当然还是要多多理解AC 自动机,多敲模板了。 #include #include #include #define maxs 1000050 #define maxn 500050 using namespace std; i

2013-07-19 23:33:31 659

原创 Poj 1960 Period//kmp

如果P[1...K]与P[L-k+1...L]匹配(L为字符串长度),那么P[L-k+1...L]这一段字符一定是在重复P[1...L] - P[L-K+1...L]这段字符。     反证法:如果不是重复这一段,那么P[1...K]与P[L-k+1...L]不可能匹配。可以画图试一试。     注意字符串开始位置是0.下面是代码: #include #include #define m

2013-07-18 19:34:28 684

原创 Poj 1190 生日蛋糕//回溯,减枝

首先吐槽一下求面积和体积不用π。 其实不减枝的代码还是很好写的: //m为蛋糕的层数 //v为当前已涂的体积 //s为当前已涂得到的S //r和h为当前层的半径和高 void dfs(int m,int v,int s,int r,int h) { //推出条件 if(m == 0) { if(ans > s && v == N) an

2013-07-17 21:12:32 1033

原创 KMP小讲

设文本为T,模式串为P 暴力法匹配    从T的第一个字符开始匹配,然后从T的第二个字符开始匹配,依次匹配下去,直到匹配成功。 设i为正在匹配的字符,那么此时有 T[s+1]...T[s+i] = P[1]...P[i]。可以知道这个部分的字符串是匹配成功的,记为S。如果S很长(在i之前很多字符都匹配),那么暴力法就重复判断了S这部分的字符,浪费了时间。KMP就是在这里优化匹配的时间的复

2013-07-17 15:38:28 633 8

原创 Poj 2513 Colored Sticks//Trie+并查集+欧拉通路

这道题可以直接看出是用欧拉通路来做,但是数据特别大,只能想办法压缩数据。所以用Trie树来储存几万种颜色,并给这些颜色标记为相应的结点。   下面是代码: #include #include #define maxn 510000 int ch[maxn][26]; int val[maxn]; int degree[maxn]; int f[maxn]; int cnt; int ID;

2013-07-17 14:18:48 684

原创 Uva 1401 - Remember the Word//TRie

这道题目主用递推做。    设一个单词W,由(w1,w2,···,wn)个字母组成,判断其有多少种单词的组合方法。    给定任意一个后缀(wi,wi+1,···,wn),想要判断有多少种组合方法,就要找到它的前缀。不妨设(wi,wi+1,···,wn)这个后缀的前缀为x,就要找到这个后缀有多少个前缀(这里所说的前缀是说的是单词)。不妨设d(i)表示从i到n这个后缀有多少种组合方法,设x为这个

2013-07-16 20:53:54 800

原创 Poj 2503 Babelfish//Trie树

这道题目就是裸的Trie树,当然了也可以用其他方法做。这里为了训练的目的用Trie树做。就是这道题的输入让人蛋疼。Orz 下面是代码,哈哈自己写的Trie的模板。 #include #include #define maxn 200010 struct node { char val[11]; int ok; } Val[maxn]; int ch[maxn

2013-07-16 11:21:29 596

原创 暴力之回溯法入门(持续更新)

刷刷水题,入个门先: 百练oj:2754 八皇后 西电oj:1010 素数环 Poj:1011 Sticks 百练oj:2754 八皇后   先打表,这样节省时间。不过这道题还用存下每个可能解。   下面是代码:   #include #include using namespace std; const int maxn = 100; const int N = 8; int A[

2013-07-15 21:47:15 1128

AC 自动机论文

AC 自动机的ACM论文

2013-07-18

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

TA关注的人

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