摘要:
题目:http://poj.org/problem?id=1699无意间A了。。超时一次,加了一句if(len > ans)return; 然后就A了,dfs题,没有太多好说的,代码写的效率高一点就行。 1 #include 2 #include 3 4 char str[10][25]; 5... 阅读全文
摘要:
题目:http://poj.org/problem?id=2886左右转的果断晕,题目不难,关键是准确的转啊转。因为题目要求输出约数个数最多的数,所以预处理[1,500000]的约数的个数就行了。还有利用反素数的做法,太专业了,还是暴力预处理吧。。。 1 #include 2 #include ... 阅读全文
摘要:
题目:http://poj.org/problem?id=2406跟1961差不多,题解就不写了,一开始理解错题了,导致WA一次。 1 #include 2 #include 3 #include 4 int n, next[1000010]; 5 char s[1000010]; 6 voi... 阅读全文
摘要:
题目:http://poj.org/problem?id=1961很好的题,但是不容易理解。因为当kmp失配时,i = next[i],所以错位部分就是i - next[i],当s[0]...s[i]是一个周期串时,i-next[i]显然就是一个循环节,这时(i+1) % (i-next[i]) =... 阅读全文
摘要:
读书笔记终于写完了,写一下我对KMP的理解。KMP的思想就是尽量利用已经得到的信息,来降低时间复杂度,已经得到的信息存放在next数组里。算法确实很难理解,所以很难讲解。。举个例子来说吧。设字符串是str[],next[5] = 2。就表示str[5]前面的2个字符,与str[2]前面的2个字符相同... 阅读全文
摘要:
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1394没看到多组输入,WA了一万次。。。。。。其实很简单,有人暴力过得,我感觉归并排序、二叉排序树求逆序数都可以,但是我没写。 1 #include 2 #include 3 4 const int M... 阅读全文
摘要:
题目:http://poj.org/problem?id=2777虽然是简单题,但是我还是写一下我的理解。插入和查询都是自上而下进行的,所以如果当前线段是红色的,那么子节点肯定也是红色的,不必继续往下遍历,这便是lazy的核心。所以我们要标记一段线段是否是纯色的,这个题颜色用1-30来表示,所以我用... 阅读全文
摘要:
题目:http://poj.org/problem?id=2828很巧妙的题,逆序插入线段树,这样元素不用移动。用二叉排序树也能过。 1 #include 2 #include 3 4 const int MAXN = 200010; 5 6 int pos[MAXN], val[MAXN]... 阅读全文
摘要:
题目:http://poj.org/problem?id=2528很经典的题目,线段树入门题,写了好几天终于懂离散化了。题意是在一个被分成10000000 段的墙上贴海报,从L贴到R,问最后能看见几张海报。因为海报只能是后来的覆盖先来的,所以逆序贴,每贴一张就标记它表示的线段,这样当贴到第i张时,如... 阅读全文
摘要:
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1166简单题,1A了,这个好像就是传说中的“点树”。设当前结点表示线段[left, right],编号为i,则结点的左孩子表示线段[left, mid], 编号为2*i,右孩子表示线段[mid+1, righ... 阅读全文