自定义博客皮肤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

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

原创 Codeforces 589H Tourist Guide (2015~2016 NEERC Southern Subregional H题) 树形DP

题目大意:就是现在给出一个n个点m条边的无向图, 其中有k个点被标记要求从图中找到尽量多的路径, 这些路径起点和终点互不重合(也就是每个标记点作为起点或者终点只能用一次), 并且没有公共边输出能找到的最多的路径条数, 以及其中一种方案大致思路:首先对原图求出一个生成森林, 于是可以将这个问题转化成在每一个生成树上问连接标记点, 路径没有公共边且每个标记点只能作为起点或者

2015-10-23 11:04:12 895 2

原创 BZOJ 2434 阿狸的打字机 (AC自动机 + 树状数组)

题目大意:中文题面, 就是在解密串之后询问第x行的串在第y行的串中出现了几次串的最大长度 大致思路:首先不难将给出的串解出来插入到Trie树中, 那么对于每一次询问, 其实就是在对于所有串建立AC自动机之后, 考虑AC自动机的fail树, 第x行的字符串的结尾位置的结点是u的话, 就相当于问在fail树中, 以u为根的子树下有多少个结点是AC自动机上第y行的字符串经过的点

2015-10-21 18:33:01 720

原创 HDU 4871 Shortest-path tree (树分治之点分治 最短路径树问题)

题目大意:给出一个连通的无向图, 然后找一颗生成树, 生成树满足点1到每个点的书上距离都是原图中的最短路, 然后在满足最短路的条件下, 点1到每个点的树上路径的序列字典序最小找出这个树之后, 给出K询问树上有K个结点的路径的最大边权值, 以及这样的最大边权值的路径的方案数大致思路:首先spfa取的所有的1到其他点的最短距离然后按照字典序进行dfs找出最短路径树之后就

2015-10-15 00:20:10 1342

原创 HDU 4812 D Tree (树分治之点分治)

题目大意:给出一棵树, 顶点数 n 每个点有一个权值给出K询问这棵树中两点路径上的点的权值乘积对1e6 + 3取模之后等于K的路径的两个端点形成的点对中字典序最小的大致思路:点分治第二题用f[i]表示从当前的子树根开始到某个点的路径乘积为i的点的最小标号于是对于每一次分治, 去掉重心x之后, 依次处理每一棵子树来使得f的来源不一样注意要预处理逆元

2015-10-14 11:42:44 455

原创 POJ 1741 Tree (树分治之点分治)

题目大意:给出一棵树, 点数n 大致思路:马上就要区域赛了...走前看点点分治的题...遵循昊哥的教导这个题就是点分治很裸的一个模型了所谓点分治, 每次将问题递归到子树上解决,为了保证递归层数, 每次选取树的重心来进行分割, 可以证明这样的问题递归层数不会超过O(logn)那么剩下的都直接看的模板了....感觉这个模板好几个dfs之间的关联性好强...有种环环相

2015-10-13 23:13:20 587

原创 HDU 4848 Wow! Such Conquering! 搜索+剪枝

题目大意:就是一个30个点的图, 有边权, 求从点1出发经过所有点的最小罚时每个点(起点除外)有一个期限, 不能再超过这个期限的时间到达大致思路:首先这就是一个旅行商问题加上了一个最后期限的限制不过这个题使用搜索求解首先用floyed处理出每两个点之间的最小时间花费需要较多的剪枝才能通过1. 对于当前位置接下来直接去某个点都无法满足在期限前到达, 直接返回

2015-10-06 21:30:37 516

原创 HDU 4850 Wow! Such String! 欧拉回路

题目大意:就是现在对于每一次给出的N =4的子串都只出现一次如果不可能就输出Impossible大致思路:首先考虑到如果长度为l + 1的串出现了两次那么长度为l的串一定也出现了两次所以构造的串一定是所有长度为四的串都只出现了一次那么能不能对于所有的长度为4的串都出现呢一共有26*26*26*26种可能的长度为4的子串我们从状态转移的角度进行考虑考虑4个

2015-10-06 21:24:54 544

原创 HDU 4757 Tree (倍增算法求LCA + 可持久化Trie树)

题目大意:就是现在给出一棵树, 结点个数不超过10W, 每个节点上有一个不超过2^16的非负整数, 然后10W次询问, 每次询问两个节点的路径上的所有数中异或上给出的数的最大值大致思路:刚开始做这个题想的是树链剖分之后用线段树套Trie树来做...结果悲剧地MLE了...另外那样做得话复杂度其实是比较大的...每次询问都是16*(logn)*logn级别的..后来发现是

2015-10-05 21:58:16 1397

原创 FZU 1686 神龙的难题 (DLX求重复覆盖)

题目大意:就是现在给出一个n*m的01矩阵每次可以选择将一个n1*m1的矩形中的所有1变成0问将所有的1变成0需要使用n1*m1的矩形至少多少次大致思路:对于每一个位置作为列, 一共15*15列, 对于每一个可能选择的矩形都建立一行, 然后用Dancing Link做重复覆盖即可代码如下:Result  :  Accepted     Memory  :

2015-10-05 20:31:31 1096

原创 HDU 2295 Radar (DLX求重复覆盖, A*搜索)

题目大意:就是在M个站中选择至多K个使得N个点被覆盖, 为需要的最小半径大致思路:二分答案R, 然后建立N*M的01矩阵判断重复覆盖是否可行重复覆盖和精确覆盖不同, 每次只会删掉每一列所有相关的1, 而不会将有相关1的行删去, 所以矩阵在减少的速度上没有精确覆盖快, 需要进行剪枝这里使用一个估价函数f(), 表示单签状况下最好情况需要多少步才能走完, 进行剪枝

2015-10-05 11:20:24 492

原创 ZOJ 3209 Treasure Map (DLX精确覆盖问题)

题目大意:给出一个n*m的矩形, n, m 大致思路:就是将n*m个小的1*1的正方形视作一个单位做精确覆盖问题就好了最坏情况下900列, 500行, 直接用DLX就可以代码如下:Result  :  Accepted     Memory  :  10828 KB     Time  :  70 ms/* * Author: Gatevin * C

2015-10-04 20:21:02 656

原创 SPOJ 1771 NQUEEN (DLX解n皇后问题)

题目大意:就是现在在一个n*n的棋盘上已经摆放了一些皇后, n 现在要求找到对应的一种方案使得棋盘上有n个皇后互不攻击大致思路:就是舞蹈链解决的一类问题....用列表示对应行, 列, 左斜线和右斜线分别对应的占用情况在Dance的时候注意走到N步停止, 每次消除代表着行或者列的那些列的1, 而不是优先考虑对角线因为对角线方向是不能刚好选出N个互补相交的, 那样搜会导

2015-10-04 19:54:18 1352

原创 POJ 2676 Sudoku (DLX解数独)

题目大意:经典数独, 9*9每行每列每个九宫格都有1~9, 多解输出任意一解大致思路:没什么好说的数独了....和POJ 3074一样..代码如下:Result  :  Accepted     Memory  :  216 KB     Time  :  0 ms/* * Author: Gatevin * Created Time: 2015/

2015-10-02 10:50:58 665

原创 POJ 3076 Sudoku (DLX解数独)

题目大意:解一个16*16形式的数独要求每行每列每个16宫格都包含A~P大致思路:和POJ 3074一个道理...继续练手刚开始数组开小调了一段时间...代码如下:Result  :  Accepted     Memory  :  500 KB     Time  :  3391 ms/* * Author: Gatevin * Created

2015-10-02 10:36:20 1480

原创 POJ 3074 Sudoku (DLX解经典数独)

题目大意:给出一个数独求解, 题目保证有唯一解要求每行每列每个九宫格都恰好包含数字1~9大致思路:学习DLX的简单练习构造矩阵的方法如下:一共324列刚开始没考虑到每个格子只能填一个数样例没过, 再加上81列表示每个格子的唯一性才通过样例...矩阵的构造方法见代码注释代码如下:Result  :  Accepted     Memory  :

2015-10-02 10:03:57 1259

原创 HUST 1017 Exact cover (Dancing Links 模板题)

题目大意:就是N*M的01矩阵, 初始有C(C 大致思路:跳舞链解决的矩阵精确覆盖问题, 模板题模板来自kuangbin大爷Orz代码如下:Result  :  Accepted     Memory  :  1916 KB     Time  :  164 ms/* * Author: Gatevin * Created Time: 2015/1

2015-10-01 23:00:59 588

原创 Codeforces 557E Ann and Half-Palindrome (Trie树)

题目大意:就是现在给出长度不超过5000的只包含小写字母'a'和‘b'的字符串定义半回文串:字符串S是半回文串的条件是S[i] = S[|S| - i + 1] 对所有的计数 i, i 然后给出整数K, 求给出的字符串中所有的半回文串中字典序第K小的是什么相同样子但是出现位置不同视为不同大致思路:首先可以O(|S|^2)处理出所有的半回文串, 用half[u][v]

2015-10-01 21:49:32 527

原创 ACdream 1019 Palindrome 树状数组+Hash

题目大意:就是现在给出一个长度不超过100万的字符串, 有两种操作, 修改某个位置的字符, 询问 [L, R] 这个部分的字串是否是回文串大致思路:这个题刚开始用线段树写了一发发现MLE...然后就换树状数组了...不知道zkw线段树能不能行首先对于这个串按照原来的顺序和倒序分别建立树状数组, 保存每个字符对应在全部的串中对应的哈希值然后树状数组查询区间和, 修改的

2015-10-01 21:40:16 582

原创 SCU 4438 Censor (KMP)

题目大意:就是现在给出两个字符串A, B, 长度都不超过500万, 要求每次将B中第一次A的出现删除, 然后将B剩下的两段前后合并, 然后重复这个过程直到没有可以删除的A位置, 问最后剩下的串是什么大致思路:首先看这个字符串的长度不难想到用KMP处理出A的next数组然后考虑在B上进行匹配, 这里我用的是两个数组来模拟链表, 表示剩下的串, 每次发生删除时, 将当前位置的指

2015-10-01 20:11:19 5288

原创 SCU 4437 Carries 想法题

题目大意:就是现在给出10万个1e9以内的非负整数, 问他们两两相加一共会有多少次进位(10进制加法), 例如99 + 1有2次进位, 10 + 19没有进位大致思路:其实就是一个简单题, 比赛的时候想了半天一直束缚在按位考虑的范围内没有想到以一整段后缀位来考虑...数位DP做傻了么...这个题考虑进位的位置即可, 首先枚举进位是因为达到了10, 100, 1000...,

2015-10-01 20:01:24 1038

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

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

2015-05-09

空空如也

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

TA关注的人

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