- 博客(11)
- 收藏
- 关注
原创 [KMP求最小循环节][HDU3746][Cyclic Nacklace]
题意给你个字符串,问在字符串末尾还要添加几个字符,使得字符串循环2次以上。解法无论这个串是不是循环串 i-next[i] 都能求出它的最小循环节代码:/* 思路:kmp+字符串的最小循环节问题分析: 1 题目要求的是给定一个字符串,问我们还需要添加几个字符可以构成一个由n个循环节组成的字符串。 2 可知我们应该先求出字符串的最小循环节的长度:假设字符串的长度为len,那么最小的循环节就是cir =
2015-09-22 17:14:25 662
原创 [扩展KMP][HDU3613][Best Reward]
题意:将一段字符串 分割成两个串 如果分割后的串为回文串,则该串的价值为所有字符的权值之和(字符的权值可能为负数),否则为0。 问如何分割,使得两个串权值之和最大思路:首先了解扩展kmp 扩展KMP:给出模板串A和子串B,长度分别为lenA和lenB,要求在线性时间内,对于每个A[i](0<=i<=lenA-1),求出A[i..lenA-1]与B的最长公共前缀长度,记为ex[i](或者说
2015-09-22 16:51:41 406
原创 [Manacher][HDU3613][Best Reward]
题意: 将一段字符串 分割成两个串 如果分割后的串为回文串,则该串的价值为所有字符的权值之和(字符的权值可能为负数),否则为0。 问如何分割,使得两个串权值之和最大思路: 裸的: 枚举分割点,计算,O(n) 判断是否回文 总复杂度O(n^2) 优化: 利用Manacher的预处理 O(1)判断是否回文 复杂度O(n)//Manacher /* ** 求最长回文子串 */ #
2015-09-22 16:09:50 517
原创 [KMP][HDU3336][Count the string]
题意计算所有S的前缀在S中出现了几次思路跟前缀有关的题目可以多多考虑KMP的NEXT数组#include <cstdio> #include <cstring> #include <iostream> #include <cstdlib> using namespace std; char S[2000000]; int NEXT[2000000]; int dp[2000000];//dp[i
2015-09-22 14:49:16 417
原创 [KMP求最小循环节][HDU1358][Period]
题意求所有循环次数大于1的前缀 的最大循环次数和前缀位置 解法直接用KMP求最小循环节 当满足i%(i-next[i])&&next[i]!=0 前缀循环次数大于1 最小循环节是i-next[i] #include <cstdio> #include <cstring> #include <iostream> #include <cstdlib> using namespace
2015-09-21 00:01:05 411
原创 python 笔记4-- 函数式编程
高阶函数 把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。 在python中 函数也是一种变量def add(x, y, f): return f(x) + f(y) map map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。 >>> def f(x):
2015-09-19 17:05:12 382
原创 [裸KMP][HDU1711][Number Sequence]
题意找到子串在母串出现的第一个位置解法裸的KMP特别的地方第一次不看模板自己敲的KMP#include<stdio.h> const int maxn=100000; const int MAXN=1000000; int next[maxn]; int S[MAXN]; int T[maxn]; int N,M; void get_next() { for(int i=2;i<=M;i++
2015-09-19 11:47:34 406
原创 python 笔记3--高级特性
切片语法 L[l:r] 取L[l],L[l+1]…L[r-2],L[r-1] L[l:r:m] 取L[l],L[l+m],L[l+2*m],L[l+3*m]….(满足l+n*m<=r-1) tips 字符串,tuple也可以切片 迭代dict 迭代key >>> for key in d: print(key) 迭代value for value in d.values()
2015-09-19 09:16:32 426
原创 python 笔记2--函数
函数变量>>> a = abs # 变量a指向abs函数 >>> a(-1) # 所以也可以通过a调用abs函数 1 定义函数def my_abs(x): if x >= 0: return x else: return -x 默认参数陷阱 所以,定义默认参数要牢记一点:默认参数必须指向不变对象! 例如None或常量 可变参数 本质是一个
2015-09-10 23:16:23 398
原创 【网络流】【1010】【棋盘加数】
题目大意一个 N*M 的棋盘上每个格子有一个数。每次选择两个相邻的格子,并使这两个数都加上 1。问最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成同一个数则输出-1。
2015-09-10 14:43:00 610
原创 python 笔记1--基础类型
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-09-10 03:19:10 465
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人