自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Gatevin的专栏

Another blog address: gatevin.moe

  • 博客(21)
  • 资源 (1)
  • 收藏
  • 关注

原创 HDU 2897 邂逅明下 简单博弈

题目大意:就是现在一堆石子有n颗, 每次只能拿走p~q颗, 当剩余少于p颗的时候必须一次拿完拿走最后一颗的人败问谁会获得胜利大致思路:首先不难发现当n 以此类推所有k*(p + q) + 1 代码如下:Result  :  Accepted     Memory  :  1620 KB     Time  :  140 ms/* * Autho

2015-04-29 11:24:18 948

原创 HDU 2516 取石子游戏 斐波那契博弈

题目大意:就是现在有一堆石子有n颗现在先手起始的时候能取走任意颗(至少一个, 且先手第一次不能全部取完), 然后接下来轮流取石子的时候两个人取的数量不能超过对方上一次取的两倍取走最后一颗石子的人赢, 问先手胜还是后手胜大致思路:这个题看了题解之后才知道是斐波那契博弈的模型参考资料:点击打开链接Fibonacci Nim模型:现在有一堆n石子, 两个人

2015-04-29 10:54:14 2032

原创 HDU 1847 Good Luck in CET-4 Everybody! 简单博弈

题目大意:题面中文, 题意就不说了大致思路:就是确定一下NP点就可以了, 简单的递推代码如下:Result  :  Accepted     Memory  :  1616 KB     Time  :  0 ms/* * Author: Gatevin * Created Time: 2015/4/28 21:18:46 * File Name:

2015-04-28 21:25:25 680

原创 HDU 1846 Brave Game 博弈水题

题目大意:就是简单的取石子游戏....n个石子两个人每次可以去1~m个, 取走最后的胜利大致思路:如果n % (m + 1) == 0后手胜, 否则先手胜...没什么好解释的了...代码如下:Result  :  Accepted     Memory  :  1620 KB     Time  :  0 ms/* * Author: Gatevin *

2015-04-28 21:10:54 499

原创 HDU 1564 Play a game 简单博弈

题目大意:就是现在有一个n*n的棋盘, 现在在一个角落有一个棋子, 两人轮流进行操作, 每次可以将这个棋子移动到相邻的没有走过的位置, 谁不能移动棋子谁就输了, 棋子相邻的位置时上下左右4个方向大致思路:刚开始看没什么感觉, 不过稍微画了一下之后就发现必胜策略了首先如果n是偶数, n*n的棋盘刚好可以被2*1的砖块放满, 那么对于先手一定从2*1砖块的一端走到另外一端, 那

2015-04-28 20:58:24 757

原创 HDU 1079 Calendar Game 简单博弈

题目大意:就是现在两个人在玩一个日历, 初始选定一个起点日期然后两人轮流操作, 每次可以选择跳到下一天或者下一个月对应的同一天, 但是当下一个月没有这一天是不能选择跳到下一个月比如1月31不能跳到2月31, 因为没有那么到达2001年11月4日的人胜利, 游戏过程中如果谁超出这个日期就输了, 初始位置选定在1900年1月1日到2001年11月4日之间, 问先手是否会胜利是就Yes否则N

2015-04-28 20:19:27 667

原创 BZOJ 2806 (ctsc 2012) Cheat 后缀自动机预处理 + DP

题目大意:就是现在有m个01串代表搜集的文章, 现在要检查n篇作文, 对于每一篇作文找到最大的L值, 一篇文章的L值可以将这篇文章分割成多个部分, 其中长度>=L的且在m个01串中出现过的串称之为熟悉的串, 熟悉的串的长度加起来要达到文章总长度的90%就称这篇文章熟悉, 求最大的L使得这篇文章熟悉大致思路:首先将m篇文章连起来中间用另外的字符隔开, 然后将要检查的作文在这个自动

2015-04-28 09:38:54 840

原创 HDU 4270 Dynamic Lover 后缀自动机

题目大意:就是现在初始有一个字符串, 然后接下来有m (m 大致思路:首先用后缀自动机的话对于添加操作和询问操作都很容易解决, 但是对于删除操作就不太好办了对于删除操作需要对于SAM中的每个节点都添加一个del指针, 表示是否已经被删除, 然后由于每次添加新字符的时候最多只会添加2个节点, 将有同一次插入字符新生成的结点的del指针指向同一个bool的域, 那么删除操作的时

2015-04-27 15:05:28 1276

原创 HDU 1525 Euclid's Game 博弈

题目大意:就是现在初始的时候有两个数a, b, 每次可以选择将其中较大的那个数减去较小的那个数的任意倍, 但是得到的数必须不小于0, 谁将其中一个数变成0谁就赢了初始给定的两个数都是正整数大致思路:其实就是一个简单的博弈问题, 我们每次考虑二元组(a, b), 不妨设 a <= b, 那么当(a, b)可以变成 (a - b, b), (a - 2*b, b), ... (

2015-04-21 11:39:38 534

原创 Codeforces 427D Match & Catch 后缀自动机 或 后缀数组

题目大意:就是对于两个字符串S1和S2, 求出他们最短的一个公共字串P, 满足P在S1中只出现1次, P在S2中也只出现一次, 输出P最小的长度, 如果这样的P不存在, 输出-1大致思路:很明显的一个做法是将S1和S2连接起来中间用未出现的字符隔开, 然后建立后缀自动机, 记录每一个状态中表示的字符串的来源(可以状压记录), 然后所有状态中, 满足Right集合为2, 且状压表

2015-04-16 20:45:40 1128

原创 HDU 4622 Reincarnation 后缀数组 或 后缀自动机

题目大意:就是现在给定字符串S (长度不超过2000), 接下来是Q次询问(Q 大致思路:首先如果用后缀数组的话不难想到求出S的后缀数组之后, 对于每一次询问 l, r, 遍历height数组找到 l 0)这样复杂度是O(Q|S|)如果用后缀自动机来做的话我刚开始想的是对于S建立后缀自动机之后, 对于每次询问, 将子串[l, r]在S的后缀自动机上遍历一遍,

2015-04-16 19:58:15 1058

原创 HDU 4641 K-string 2013年多校第4场J题 后缀自动机

题目大意:就是现在初始的时候给出一个长度为n的串S(n K串指的是S的子串, 且在S中出现了不少于K次大致思路:首先不难想到后缀自动机, 对于初始的串S建立后缀自动机, 然后每个状态的Right集合的大小是否大于等于K就代表了这个状态代表的子串是否是K串然后由于后缀自动机的在线性质, 每次添加新的字符到S后面时, 将新的字符插入后缀自动机, 然后考虑新增加的np状态对于

2015-04-13 17:33:20 1147

原创 Codeforces 235C Cyclical Quest 后缀自动机

题目大意:就是现在对于一个长度不超过10^6的字符串S, 接下来有n次询问(n 轮换变化x比如 x = "aaba", 那么对应的要找出"aaba", "abaa", "baaa", "aaab"在S中出现次数的和大致思路:后缀自动机一发AC...首先对于S建立后缀自动机, 然后对于每一个询问的字符串xi, 变成xi+xi的形式, 这样对于xi + xi这个字符串在S的

2015-04-11 16:43:51 818

原创 POJ 1509 Glass Beads 后缀自动机 或 后缀数组

题目大意:就是现在对于一个字符串S, 每次都可以将第一个字符放到最后面, 这样一共有lenght(S)中串, 求这样的床中字典序最小的那个的起始位置是第几个字符时最小大致思路:首先后缀数组的做法不难想到, 就是将S变成SS之后求一遍后缀数组, 扫一遍height数组, 找到第一个sa[i] = 0的那个sa[i],然后对于从这个位置开始的连续的height[i] >= leng

2015-04-11 14:57:04 1201

原创 SPOJ NSUBSTR Substrings 后缀自动机

题目大意:就是现在给出一个长度不超过25W的字符串S, 定义F(x)表示字符串S中长度为x的子串出现的最多次数, 例如“ababa"中F(1) = 3 (“a”出现了3次), F(2) = 2 ("ab“或者"ba"都出现了2次)F(3) = 2 ("aba"出现了2次) F(4) = F(5) = 1, 对于给出的字符串S, 长度为n, 输出F(1~n)的值大致思路:首先

2015-04-11 13:29:58 1212

原创 SPOJ SUBLEX Lexicographical Substring Search 后缀自动机

题目大意:就是现在对于给出的长度不超过90000的字符串进行Q(Q 其中相同的子串只算一次例如“aaa"的子串是"a", "aa", "aaa"大致思路:首先对于给出的字符串建立后缀自动机, 然后利用后缀自动机的性质, 所有相同的子串一定会在同一点终止, 那么, 从根开始, 每次都选择尽量小的字符走, 首先我们可以dfs预处理出每个状态点处代表的可能向下的不同字串有多少个,

2015-04-10 15:49:00 1045

原创 HDU 4821 String (2013长春现场赛I题) 字符串Hash

题目大意:就是现在对于给出的字符串S, 找出S中有多少个长度为M*L的子串, 满足组成M*L长度的字串是有M个不同的长度为L的串拼接起来的大致思路:明摆着的字符串Hash, 预处理Hash之后对于连续的长度为L的段进行枚举即可枚举起点, 每次向后L的一段, 这样是个很常见的枚举技巧了...没什么难度代码如下:Result  :  Accepted     M

2015-04-09 22:28:11 1119

原创 HDU 4818 RP problem (2013年长春现场赛F题) 高斯消元性质利用

题目大意:就是现在一个图中100个点, 代表100个人, 每个人如果视另外一个人为朋友, 就有一条从这个人联想其他人的边, 每天每个人自己拥有的RP值要平分给所有其视为朋友的人, 同样的一个人分发RP值之后也会受到RP值, 如果这个过程不会改变RP值的分布, 则这样一个RP值的分布是稳定的, 现在所有人的RP总和是1, 对于给定的图, 计算是否存在唯一的稳定分布, 如果存在唯一的稳定分布, 那

2015-04-09 22:24:24 1500 1

原创 SPOJ LCS2 Longest Common Substring II 后缀自动机

题目大意:就是现在给出最多10个长度不超过10^5的字符串, 求这10个串的最长公共字串的长度大致思路:这是SPOJ LCS那题的升级版, 那道题我是将所有串连接起来中间用没有出现过的字符隔开然后整体建立后缀自动机然后对于每个点上状压记录Right集合当中元素的来源来做的但是这个题这么做会TLE, 虽然复杂度也是O(n)的, 但是这个题的时间限制很紧所以后来换了一个方法

2015-04-09 10:50:54 878

原创 SPOJ LCS Longest Common Substring 后缀自动机

题目大意:就是现在给你两个长度不超过25*10^4的串, 求他们的最长公共子串的长度大致思路:第一道后缀自动机的题...居然套模板一发过了....我的想法就是原本后缀自动机中不是对于你每一个状态State记录了Right集合的元素个数嘛, 那么对于两个输入的串, 中间用一个没有出现的字符隔开之后插入后缀自动机, 然后用一个变量appear状压记录当前这个状态所含有的Ri

2015-04-08 20:10:55 704

原创 Codeforces Gym 100543G Virus synthesis (Palindromic Tree + DP) 2014欧洲中部赛区G题

题目大意:就是现在初始的时候没有任何DNA链, 现在又无数个A, G, C, T这些材料无数个, 每次可以在已经有的链上选择2中操作:1. 在链的的左边或者右边加上A, G, C, T的其中一个2. 将现有的链镜像相连如AGC镜像可以变成AGCCGA或CGAAGC给出一个长度不超过10^5的目标串, 问最少需要几次操作完成这样一条链, 其实的链为空大致思路:这个题挺

2015-04-01 15:02:56 1837

后缀自动机算法代码 C++

后缀自动机C++实现, 将后缀自动机写成了结构体, 配有详细的注释内容

2015-05-09

空空如也

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

TA关注的人

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