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

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

原创 LeetCode 8 String to Integer (atoi)

题目大意:对于传入的字符串,将其转换成为对应的整数值,注意有非数字输入时将第一个非数字输入往后的所有输入无视注意处理开头的空格,无视掉这些空格然后就是开头可能有正负号大致思路:知道了在非法字符之后的串是无视掉的之后不是很难做这个题顺便回忆了一下long long强制类型转换成为int的时候的过程由于是强制截断取了long long的后半段的位来当作int,当lo

2016-03-07 15:36:51 647

原创 LeetCode 146 LRU Cache

题目大意:就是实现内存管理中的LRU(Least Recently Used)内存管理算法内存管理算法的话,LRU和LFU不同,LRU是移除最久没有使用的页而LFU是移除最近使用次数最少的页大致思路:这个问题的话,表示刚好复习了一下内存管理...首先由于每个内存块在被使用时,会导致一个内存块最近被使用,而其他的块的相对位置不变,考虑用链表来表示他们,这里使用双向链表

2016-03-07 12:57:28 559

原创 LeetCode 4 Median of Two Sorted Arrays

题目大意:给出两个排序好了的数组,大小分别为m, n,要求在log(m + n)的时间复杂度内求出两个数组合并之后的中位数大致思路:额。。这个题还是有点烦的吧。。。刚开始做的时候自己没什么想法,后来在网上看了下题解是转化成第K个数的问题然后每次将搜索范围缩小,在寻找第K小数的时候考虑两个数组的第K / 2小的数,然后通过比较两个数组的这个位置的大小就可以缩小范围,每次K折半

2016-03-06 20:18:26 457

原创 LeetCode 3 Longest Substring Without Repeating Characters

题目链接:https://leetcode.com/problems/longest-substring-without-repeating-characters/题目大意:就是需找给出的串中最长的不包含重复字符的连续子串的最大长度大致思路:我是用一个bool[256]的数组记录每个字符是否出现过,然后贪心用last表示对于当前位置i, 以位置i结尾的串

2016-02-16 08:41:58 495

原创 LeetCode 2 Add Two Numbers

题目连接:https://leetcode.com/problems/add-two-numbers/题目大意:就是链表表示的两个数进行加法大致思路:首先注意进位的问题,然后就是链表的长度不一样的问题,两个长度分别为x, y的数相加,最多能得到的数长度是max(x, y) + 1写的时候注意一下就好了代码如下:Result  :  Acc

2016-02-16 08:17:19 490

原创 LeetCode 1 Two Sum

这个学期开学就要开始找实习了呢......开始刷LeetCode准备一下面试吧题目连接:https://leetcode.com/problems/two-sum/题目大意:就是给出一个数组和一个target, 问数组中能够求和得到target的两个数的下标, 下标从0开始大致思路:首先有个很明确的写法是用vis[x]表示x是否出现,初始化-1,

2016-02-16 07:47:34 465

原创 Codeforces Gym 100825F Transportation Delegation (最大流)

题目大意:就是现在又s个州, 每个周要么有工厂要么有原材料供应商或者什么都没有, 有的话只有一家现在有t个运输公司分别提供运输服务要求一个工厂只能匹配一个供应商,一个供应商只能供应一个工厂,且要满足一个运输公司只为其中一个匹配对服务(可以通过多个运输公司一起来传递来配对一个工厂和供应商)问最大匹配对数大致思路:EC-final前最后一个题.....打完之后训练就结束

2015-12-11 01:07:20 798

原创 Codeforces Gym 100800J Jelly Raid (暴搜)

题目大意:就是在60*60的地图上现在又200只小怪兽, 每只小怪兽都是在一个长度不超过7的路线上来回走, 现在要从起点到终点, 路途中和小怪兽在同一排或者同一列中且没有建筑物遮挡, 也就是说每只小怪兽都会影响到上下左右能之间看见的地方, 除了到达终点的同时是能被看见的 情况外, 其他时刻都不能被看见移动方式为上下左右或者原地不动, 问起点到终点需要的最短时间, 不能到达就impossib

2015-12-07 14:31:08 579

原创 Codeforces Gym 100800L Telescope (二维树状数组 或 暴力水过)

题目大意:貌似这个题就是题目意思不太好懂...其实题目本身还是比较简单的题意是给出一张照片(最多1000*1000的十六进制矩阵)然后这是一个星体的照片, 并且告诉的是每个位置(x, y)的值是原来的矩阵中以(x, y)为中心的一个N*N的矩阵的值的平均值向下取整的结果原矩阵中的值要么是0x0000要么是0xFFFF, 在矩阵以外的地方的值都考虑为0问原来的矩阵中0xFFFF连

2015-12-07 14:22:56 676

原创 HDU 1532 Drainage Ditches 网络流模板题(Dinic)

题目大意:就是给出一个DAG, 源点是1, 汇点是M, 给出每条边的容量, 询问1到M的最大流大致思路:网络流模板题...第一次写网络流, 记一下代码如下:Result  :  Accepted     Memory  : 1576 KB     Time  :  0 ms/* * Author: Gatevin * Created Time: 2

2015-12-04 22:46:43 577

原创 HDU 5576 Expection of String (DP, 前缀和维护) 2015年上海现场赛E题

题目大意:就是现在给出一个串, 只包含一个*号, 表示乘法, 剩下的是数字于是对于这个乘法式子, 当*某一边没有数字的时候视为那一侧的数字是0现在进行K次操作, 每次操作随机选择两个不同的位置交换为最后表达式的值的期望, 乘上(C[n][2])^K的结果, n是串的长度, 结果对于10^9 + 7取模大致思路:这个可能的是从学长那边听到的...然后推了一下...然后

2015-11-28 22:01:53 3388

原创 Codeforces Gym 100814J Game 简单博弈

题目大意:就是现在初始的时候有一个字符串S, 长度不超过10000两个人轮流操作每次可以选择从左向右将连续两个字符按照给出的矩阵进行变化或者选择从右往左如果最后剩下的是元音字母则Salah获胜, 否则Marzo获胜Salah先手问谁会获胜大致思路:比较水, 考虑到S在每次变换之后长度都会接近减半, 于是可以直接dfs暴力搜索记下当前串以及当前轮到谁即可

2015-11-21 20:35:18 1151

原创 Codeforces Gym 100814C Connecting Graph (并查集, 树链剖分)

题目大意:就是现在初始的时候有一个只有n个点的图(n 每次操作要么添加一条无向边, 要么询问之前结点u和v最早在哪一次操作的时候连通了大致思路:这个题表示只想到了O(m*logn*logn)的做法....首先用并查集维护连通性当添加边的时候,如果两个点在不同连通块,就选取其连通块的代表结点连一条边, 权值为该操作的编号, 否则不作操作.那么在n次操作之后, 会得

2015-11-21 20:28:30 1246

原创 HDU 5558 Alice's Classified Message (后缀自动机水题) 2015年合肥区域赛G题

好久没写题解了唔.....今天水了一题...写一下吧...题目大意:就是现在给出长度不超过10W的只包含小写字母的字符串,从下标0到 length - 1现在从下标0开始进行操作每次对于下标 i , 输出下标i开始的子串中最长的在其他地方出现过的串的长度, 其它出现的位置要求起点在位置i之前, 然后i移动到这个长度之后继续操作如果没有这样的最长的串就直接i++, 继

2015-11-20 17:12:58 2637 3

原创 UVALive 6188 (LA 6188) Let There Be Light 计算几何

题目大意:就是现在给M = 15个光源, 然后每个光源(Tx, Ty, Tz)和Td, 对于一个点(Ex, Ey, Ez)处能产生的贡献根据公式给出了然后空间中有N = 2000个球, 现在可以从中删除R个球使得目标点出的贡献最大一个点光源能够造成贡献是没有球能挡住这个点光源到目标点的光线球是空心的大致思路:首先可以处理出每个点光源如果要对目标点产生贡献需要删去哪些

2015-11-08 09:26:17 892

原创 UVALive 6669 (LA 6669) Dragon’s Cruller (康托展开 + 最短路)

题目大意:就是一个3*3矩阵的游戏, 现在一共有9个格子, 然后有8个格子被8种方块填充, 另外一个是空格, 现在给出了一个表分别表示A~I位置能到达的位置和需要的代价需要的代价只有两种每次可以移动一个块到空位置为从一个状态最小需要多少代价变成另外一种大致思路:首先对于一个当前的游戏状态,用康托展开来记录当前状态,即当前状态可以表示成a1, a2, a3, ...,

2015-11-08 09:10:39 13180

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

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

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

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

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

2015-10-21 18:33:01 701

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

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

2015-10-15 00:20:10 1317

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

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

2015-10-14 11:42:44 434

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

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

2015-10-13 23:13:20 568

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

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

2015-10-06 21:30:37 495

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

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

2015-10-06 21:24:54 522

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

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

2015-10-05 21:58:16 1365

原创 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 1077

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

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

2015-10-05 11:20:24 472

原创 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 631

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

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

2015-10-04 19:54:18 1325

原创 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 643

原创 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 1455

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

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

2015-10-02 10:03:57 1229

原创 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 562

原创 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 504

原创 ACdream 1019 Palindrome 树状数组+Hash

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

2015-10-01 21:40:16 568

原创 SCU 4438 Censor (KMP)

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

2015-10-01 20:11:19 5242

原创 SCU 4437 Carries 想法题

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

2015-10-01 20:01:24 984

原创 HDU 5219 Repeating 后缀数组 + 莫比乌斯函数

题目大意:就是现在给出一个长度不超过100100的只包含小写字母的字符串, 求问这个串有多少个字串没有循环节, 如abab有循环节ab, 而aba, a, abc没有大致思路:好久没写题解了...补一个历史遗留的坑...首先这题要先枚举循环节长度, 然后找到所有的可以以这个长度为循环节的串根据每次枚举的循环节长度将串分成多个长度为L的组, 然后用后缀数组找出连续的一整段

2015-09-27 20:52:51 911

原创 ACdream 1069 无耻的出题人 无聊写着玩的题

题目大意:现在题目被加密了, 给出加密后的串hjxh dwh v vxxpde,mmo ijzr yfcz hg pbzrxdvgqij rid stl mc zspm vfvuu vb uwu spmwzh.一直前面4个词是give you a number, 出题人说自己只会Fibonacci...解密这一段文字然后写程序大致思路:既然出题人说自己只会F

2015-09-13 22:20:44 1530

原创 HDU 5221 Occupation dfs序版树链剖分

题目大意:就是现在给出一棵树, 以1为根, 树上的点都有自己的权值, 初始都没有被占领, 接下来3种操作1. 从u到v的路径上的所有点被M占领2. 某个点u被C占领3. 以u为根的子树被M占领每次操作后输出当前被M占领的那些点的点权和大致思路:很明显对于操作1和2用树链剖分很容易处理对于第3种操作, 需要利用树的时间戳...于是这里写了一次dfs版的树链剖分

2015-09-11 00:18:50 467

原创 HDU 5217 Brackets 线段树

题目大意:给出括号序列然后两种操作:1.修改某个括号为另外一种2.询问在区间[L, R]中的括号在忽略掉匹配好的括号之后第K个括号的位置, 即没有匹配的括号中第K个的位置大致思路:首先可以对于括号序列建立线段树, 线段树每个节点表示当前区间[L, R]中没有匹配的')'数量和'('数量, 这个是可以满足区间合并的那么对于每次询问当没匹配的')'和‘(‘总数不够K时就

2015-09-10 21:46:34 634

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

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

2015-05-09

空空如也

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

TA关注的人

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