![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Codeforces
文章平均质量分 79
Gatevin
这个作者很懒,什么都没留下…
展开
-
Codeforces Gym 100800J Jelly Raid (暴搜)
题目大意:就是在60*60的地图上现在又200只小怪兽, 每只小怪兽都是在一个长度不超过7的路线上来回走, 现在要从起点到终点, 路途中和小怪兽在同一排或者同一列中且没有建筑物遮挡, 也就是说每只小怪兽都会影响到上下左右能之间看见的地方, 除了到达终点的同时是能被看见的 情况外, 其他时刻都不能被看见移动方式为上下左右或者原地不动, 问起点到终点需要的最短时间, 不能到达就impossib原创 2015-12-07 14:31:08 · 594 阅读 · 0 评论 -
Codeforces 559B Equivalent Strings 想法题
题目大意:就是根据题目中给出的定义判断两个串是否相同大致思路:....前来补好久之前每补的题....当时这个题比赛的时候直接递归根据定义用Hash判断的然后TLE了....好吧毕竟不是正解这个题的正确做法是每次将串分成两半按照字典序排序, 这样递归回溯排好之后, 如果两个串根据题目中的定义是相同的话, 那么这样做之后一定会使得两个串相同并且时间复杂度也是严格意义原创 2015-08-14 12:31:36 · 753 阅读 · 0 评论 -
Codeforces Gym 100589A Queries on the Tree 树状数组 + 分块
题目大意:就是现在对于一棵有向树, 以1为根, 初始的时候每个节点上的硬币数量都是0, 树的结点个数为N 大致思路:首先如果对于每次更新操作用树状数组维护暴力执行的话, 对于同一深度的结点数量很多的时候这个复杂度会达到O(N*M*logN)显然是不能接受的, 那么考虑一下分块的思想首先用时间戳的思想将这棵树映射到一个区间上然后对于每次修改, 当要修改的点数小于sqrt(N)原创 2015-08-10 13:28:03 · 1216 阅读 · 0 评论 -
Codeforces 30E Tricky and Clever Password Manacher + KMP + 前缀和
题目大意:就是现在有一个长度为奇数的个回文串串T被加密成了 A + prefix + B + middle + C + suffix的形式, 其中 T = prefix + middle + suffix , 这六个部分可以是空的, 现在对于给出的加密后的串求原串T的最大可能长度, 其中middle长度也是奇数, preifx长度和suffix长度相等, 输入的字符串长度大致思路:原创 2015-03-29 12:19:55 · 2241 阅读 · 1 评论 -
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 · 1120 阅读 · 0 评论 -
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 · 809 阅读 · 0 评论 -
Codeforces 335C More Reclamation 博弈
题目大意:就是现在有一条宽度是2的河流, 已经有一部分被占用为陆地了, 现在两座城市轮流来占用河流的一部分土地, 一条河不能被封堵住(第a行第1列和第a + 1行第2列被封住也算封死), 在这个前提下双方轮流选择, 知道一方不能选择为止, 最后下手选择的人赢, 也就是轮到谁而那个城市没有选择余地的时候那个城市输大致思路:首先可以将连续的没有被占用过的行作为一段来考虑, 那么这样原创 2015-03-05 12:37:37 · 644 阅读 · 0 评论 -
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 · 1781 阅读 · 0 评论 -
Codeforces 452E Three strings 后缀数组 + 并查集
题目大意:就是现在给出三个总长度不超过3*10^5的字符串, 每个字符串只包含字母'a' ~ 'z', 现在对于每一个L, (1 大致思路:首先不难想到后缀数组处理三个串拼接起来的总串, 记录每一个字符的来源, 也就是记录每个后缀的来源, 然后需要根据height数组从大到小来利用并查集标记区间进行计算, 注意两个区间合并的时候之后 (i, j, k)三者不来自同一个原来的区间原创 2015-03-18 18:33:33 · 1023 阅读 · 0 评论 -
Codeforces Gym 100548G The Problem to Slow Down You (Palindromic Tree 或 Hash水过) 2014西安现场赛G题
题目大意:就是现在给你两个长度不超过20W的字符串, 都只包含小写字母, 求相同的回文串对数 (S, T), 其中S == T, S来自第一个字符串, T来自第二个字符串, S和T都是回文串大致思路:首先很容易想到的是Manacher + 后缀数组二分 + Hash的做法, 复杂度O(nlogn), 可惜的是这个题目Hash容易被卡试了好几次Hash之后试了一发二次Hash原创 2015-03-31 18:17:44 · 2405 阅读 · 0 评论 -
Codeforces 17E Palisection Manacher ( 或 Panlindromic Tree ) + 前缀和
题目大意:就是现在给出一个长度为n的字符串( 1 大致思路:继续刷manacher的论文题... 刚开始看到这个题的时候我想的是觉得可以正面做, 然后发现逗比了...因为我对于每一个以 i 位置为中心的半径为R[i]回文串只算了一次, 错以为可以树状数组弄一下...然后逗比地美国样例之后发现, 以 i 为中心的回文串有R[i]个( i 处不是 '#' 的情形下)...然后看原创 2015-03-20 20:41:37 · 1390 阅读 · 0 评论 -
Codeforces 366D Dima and Trap Graph (DFS剪枝水过...)
题目大意:就是现在给你一个有n个点m条边的图(1 然后每条边上都有一个区间限制[L, R], 现在从点1出发选择一个能够到达n的路径, 对于这条路径初始的时候选择一个x如果x对于这个路径上的每一条边都满足L 大致思路:看了题解之后才发现正解是先确定左边界然后二分右边界, 不过我写的时候dfs剪枝了一下就水过了...就是dfs的时候如果当前可行区间长度已经比找到的最大长度原创 2015-03-23 18:35:56 · 767 阅读 · 0 评论 -
Codeforces 366C Dima and Salad 背包DP
题目大意:就是现在又n个水果, 每个水果都有两个属性值ai表示美味程度, bi表示能量值, 现在要求选出多个或一个水果, 使得选出的水果的ai和与bi和之比是k问在这种清形可能出现的情况下ai的和最多是多少, 如果这样的情形不存在输出 -1(1 大致思路:首先我们最终要满足sigma(ai)/sigma(bi) = k所以对于每一个水果记ci = ai - k*bi那么原创 2015-03-23 17:53:50 · 821 阅读 · 0 评论 -
Codeforces 367E Sereja and Intervals DP
题目大意:就是现在在一个长度为m的区间上找出一组区间, 这组区间要有n个并且其中任意两个区间不存在包含关系且必须存在至少一个区间其左边界的值是x(1 大致思路:就是一个dp...状态转移方程见代码注释吧代码如下:Result : Accepted Memory : 1408 KB Time : 140 ms/* * Auth原创 2015-03-23 21:57:11 · 1405 阅读 · 0 评论 -
Codeforces 366E Dima and Magic Guitar 暴力
题目大意:就是现在有一个n*m的矩阵当中所有的数都是[1~k]以内的正整数, 现在对于一串字符s, 这个s当中相邻的两个字符在n*m的矩阵当中对应的最远距离是多少(x1, y1)和(x2, y2)之间的距离定义为 |x1 - x2| + |y1 - y2|大致思路:首先可以注意到:|x1 - x2| + |y1 - y2|= (x1 + y1) - (x2 + y2原创 2015-03-23 18:44:22 · 628 阅读 · 0 评论 -
Codeforces 367D Sereja and Sets 位运算暴力
题目大意:就是现在1~n这n个正整数被分成了m个不同的非空集合, 现在要从这m个集合当中选出最少数量的集合, 使得对于给定的d, 选出的集合中的所有数从小到大排列之后满足对于[1, n]这个区间当中任意长度为d的连续子区间当中都至少有一个数在选出的集合当中 (1 大致思路:记录下每个数出现在第几个集合当中然后遍历一遍[1, n], 对于其中所有连续的长度为d的连续子区间都记录一原创 2015-03-23 17:45:14 · 956 阅读 · 0 评论 -
Codeforces 559C Gerald and Giant Chess 组合数学 DP
题目大意:就是现在对于一个H*W的棋盘从点(1, 1)走到(H, W), 每次只能x++或者y++地走, 其中棋盘上有n个点是坏点, 也就是不能走的点, 那么从(1, 1)到(H, W)不经过这n个坏点的路径有多少种, H, W 大致思路:首先在不考虑坏点的情况下, 从(x1, y1)走到(x2, y2), x2 >= x1, y2 >= y1一共有C(x2 - x1 + y2原创 2015-08-14 13:10:56 · 1422 阅读 · 0 评论 -
Codeforces Gym 100379I Move the queen to the corner! 威佐夫博弈变形 + 高精度
题目大意:就是现在有一个皇后在棋盘的左上角, 棋盘大小n*m, n , m然后两个人轮流移动皇后, 每次可以向下, 右或者右下斜线方向移动, 移动步数至少一步, 至多不超出棋盘边界..然后谁将这个皇后移动到了右下角谁就输了大致思路:首先如果是到右下角赢的话就是威佐夫博奕的原形了这个地方谁到右下角谁输, 我们不妨记右下角是(0, 0)于是起点是(m - 1, n -原创 2015-08-14 17:00:11 · 970 阅读 · 0 评论 -
Codeforces Gym 100379J Move the (p, q)-knight to the corner! 组合数学DP, Lucas定理
题目大意:就是现在一个n*m的棋盘上有一个位于顶点的马(1, 1), 现在要从(1, 1)移动到(n, m), 中间有k个位置是不能走的 k 并且每次走的时候必须遵循马走的规则: 从(x , y)走到(x + p, y + q)或者 (x + q, y + p)n, m 大致思路:首先考虑每一个位置(x, y)到达这个位置需要的两种走法的次数分别是t1, t2, 那么原创 2015-08-14 14:57:03 · 792 阅读 · 0 评论 -
Codeforces Gym 100800L Telescope (二维树状数组 或 暴力水过)
题目大意:貌似这个题就是题目意思不太好懂...其实题目本身还是比较简单的题意是给出一张照片(最多1000*1000的十六进制矩阵)然后这是一个星体的照片, 并且告诉的是每个位置(x, y)的值是原来的矩阵中以(x, y)为中心的一个N*N的矩阵的值的平均值向下取整的结果原矩阵中的值要么是0x0000要么是0xFFFF, 在矩阵以外的地方的值都考虑为0问原来的矩阵中0xFFFF连原创 2015-12-07 14:22:56 · 690 阅读 · 0 评论 -
Codeforces Gym 100825F Transportation Delegation (最大流)
题目大意:就是现在又s个州, 每个周要么有工厂要么有原材料供应商或者什么都没有, 有的话只有一家现在有t个运输公司分别提供运输服务要求一个工厂只能匹配一个供应商,一个供应商只能供应一个工厂,且要满足一个运输公司只为其中一个匹配对服务(可以通过多个运输公司一起来传递来配对一个工厂和供应商)问最大匹配对数大致思路:EC-final前最后一个题.....打完之后训练就结束原创 2015-12-11 01:07:20 · 819 阅读 · 0 评论 -
Codeforces Gym 100814C Connecting Graph (并查集, 树链剖分)
题目大意:就是现在初始的时候有一个只有n个点的图(n 每次操作要么添加一条无向边, 要么询问之前结点u和v最早在哪一次操作的时候连通了大致思路:这个题表示只想到了O(m*logn*logn)的做法....首先用并查集维护连通性当添加边的时候,如果两个点在不同连通块,就选取其连通块的代表结点连一条边, 权值为该操作的编号, 否则不作操作.那么在n次操作之后, 会得原创 2015-11-21 20:28:30 · 1270 阅读 · 0 评论 -
Codeforces Gym 100814J Game 简单博弈
题目大意:就是现在初始的时候有一个字符串S, 长度不超过10000两个人轮流操作每次可以选择从左向右将连续两个字符按照给出的矩阵进行变化或者选择从右往左如果最后剩下的是元音字母则Salah获胜, 否则Marzo获胜Salah先手问谁会获胜大致思路:比较水, 考虑到S在每次变换之后长度都会接近减半, 于是可以直接dfs暴力搜索记下当前串以及当前轮到谁即可原创 2015-11-21 20:35:18 · 1168 阅读 · 0 评论 -
Codeforces 589H Tourist Guide (2015~2016 NEERC Southern Subregional H题) 树形DP
题目大意:就是现在给出一个n个点m条边的无向图, 其中有k个点被标记要求从图中找到尽量多的路径, 这些路径起点和终点互不重合(也就是每个标记点作为起点或者终点只能用一次), 并且没有公共边输出能找到的最多的路径条数, 以及其中一种方案大致思路:首先对原图求出一个生成森林, 于是可以将这个问题转化成在每一个生成树上问连接标记点, 路径没有公共边且每个标记点只能作为起点或者原创 2015-10-23 11:04:12 · 888 阅读 · 2 评论 -
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 · 522 阅读 · 0 评论 -
Codeforces Gym 100339B Diversion 树形DP + LCA
题目大意:就是现在一个图, 其中n个点, n 其中一些边是石子路一些事乡村小路, 图保证石子路形成一棵树, 使得所有城市通过石子路能相同, 另外是一些乡村小路现在要从图中删除一条石子路和一条乡村小路使得图变得不连通, 问有多少种删法大致思路:很明显是个树形DP, 对于每个石子路, 一旦被删除, 树就被切割成了一颗子树和该子树之外两个部分, 那么对应的删除乡村小路的方案就原创 2015-09-04 22:44:45 · 746 阅读 · 0 评论 -
Codeforces Gym 100341I Hungry Queen 2 Set水题
题目大意:就是给出平面中n个点, 然后给出行走路径问最多走多少步不会出现不能到达以及碰撞的情况大致思路:首先如果只考虑上下左右走的话很明显用Set来存坐标然后用upper_bound查询两个点之间是否有被拦截即可那么斜着走的话, 只需要将坐标轴旋转, 例如逆时针旋转45度于是(x, y)在新坐标系中映射的位置是(x - y, x + y)(放大了sqrt(2)倍于是就和原创 2015-09-04 23:18:19 · 657 阅读 · 0 评论 -
Codeforces Gym 100337B Lempel-Ziv Compression 字符串DP
题目大意:就是现在给出一个长度不超过4096的串要求进行压缩每保留一个字符的代价是9, 用(r, len)表示的代价是25, r表示从当前位置 i 的前面 r 个字符开始连续复制写出长度为len的串需要注意的是比如ab可以复制出 ab ababa也就是复制是进行到一个部分的...刚开始这里没理解于是WA了一发..大致思路:首先预处理出字符串以i位置结尾和以j位置结尾原创 2015-09-04 22:26:54 · 663 阅读 · 0 评论 -
Codeforces Gym 100340C ePig 模拟
题目大意:题目很长.....不过实现并不难....当年华科校赛遇到这个题没做...现在补一下就是现在P2P协议进行文件传输现在又n个客户端, 一个包被分成k个部分进行发送, 发送到所有客户端需要的时间发送规则:首先初始状态只有Client 1拥有完整文件(所有的包)进行提供每一轮 开始时所有Client机器决定需要的包, 每个Client需要的包是其没有的所有包中供源最少的原创 2015-09-04 23:03:13 · 739 阅读 · 0 评论 -
Codeforces Gym 100340I Longest Common Subpair 字符串DP
题目大意:给出两个字符串P和Q, 找出两个字符串A和B使得A, B都是P的无交集子串, 同时也是Q的无交集的字串问A + B的长度最长情况下, 一个A, B的解大致思路:字符串DP, 用dp[i][j]表示以上面P的第i个字符作为结尾和以下面Q的第j个字符作为结尾向前匹配的最大长度然后f[i][j]表示P的长度为i的前缀和Q的长度为j的前缀的最长公共字串, 于是f[i]原创 2015-09-04 23:11:18 · 581 阅读 · 0 评论 -
Codeforces Gym 100325A String Decomposition 字符串DP
题目大意:就是给出一个长度不超过5000的字符串进行压缩S = S1(d1) + S2(d2) + ... + Sk(dk)Si是字串, di表示这个字串连续出现的次数要使得Si的总长度最小大致思路:很明显可以用DP来做思路和Gym 100337B 类似, 先处理出以 i 位置和 j 位置作为结尾向前能匹配的最大长度dp[i][j]然后枚举循环节的长度即可原创 2015-09-04 22:31:58 · 524 阅读 · 0 评论 -
Codeforces Gym 100339I Sum vs Product 剪枝搜索
题目大意:就是给出 n 然后构造有重复元素的集合, 问其中一共有n个元素且所有元素和和积相同的集合有几个使用的元素必须是正整数大致思路:其实就是一个剪枝的搜索可以考虑到这样的集合数量肯定是不多的, 于是剪枝搜索即可平常搜索写的比较少....还是写了一下题解...代码如下:Result : Accepted Memory : 184原创 2015-09-04 22:50:36 · 551 阅读 · 0 评论 -
Codeforces Gym 100203D Different vectors 想法题 + Hash
题目大意:就是现在给出N个向量, 对于两个向量他们相等的条件是可以通过轮转使得存在正整数之间的双射使得两者相等给出N个向量问不相等的向量有多少个大致思路:首先对于每个向量, 先求出对于每个位置向左边(或者向右边)最近的和它相同的位置到这个位置的距离作为这个位置的新值例如 1 2 2 3向左找的话就是 4 3 1 4, 只要两个向量这么变化之后通过轮转是一样的话就一定恩那原创 2015-08-15 20:08:51 · 497 阅读 · 0 评论 -
Codeforces Gym 100379G Wythoff’s game with three piles 博弈
题目大意:就是现在3堆石子, 每次操作从其中一堆拿走任意数量的石子, 或者从同时3堆中拿走同样数量的石子, 每次操作拿的石子数量至少是1颗两人轮流进行操作拿走最后一颗石子的人胜对于给出的三堆石子的数量a, b, c 大致思路:这个题表示看了半天觉得好像和3堆的Nim博弈没有区别就直接当Nim博弈做了...然后就AC了....不过还是需要证明的为了证明这和Ni原创 2015-08-14 20:07:08 · 674 阅读 · 0 评论 -
Codeforces 387E George and Cards 树状数组 + 集合set查询
题目大意:就是现在有n章卡片的排列p1, p2...pn, 每张卡片上写着1~n, 现在George进行n - k次remove的操作, 使得最后只剩下的牌为b1, b2...bk, 每次remove操作可以选择一段连续的区间x1, x2...xw, 然后从中移除最小的那个, 注意移除最小的那个之后剩下的卡片保持连在一起, 完成这样一次操作会得到w份香肠, 为了使最后剩下的牌的排列为b1, b原创 2015-03-10 15:51:46 · 714 阅读 · 0 评论 -
Codeforces 337D Book of Evil 树状DP 或 BFS找子树直径端点
题目大意:就是现在对于一个n个点的树 (1 大致思路:这个题试了两种解法, 第一种是官方题解的树状DP, 另外一种是比较巧妙的转化成树的直径端点相关的问题细节都写在代码注释里了, 详情见代码吧代码如下:解法一: 树状DP解法Result : Accepted Memory : 7504 KB Time : 216 ms/*原创 2015-03-04 22:12:20 · 1200 阅读 · 0 评论 -
Codeforces 335D Rectangles and Square 暴力 + DP
题目大意:给定n个矩形(1 每个矩形给出其左下角坐标和右上角坐标, 坐标(x, y)满足(0 求是否存在一个正方形,这个正方形刚好是这n个矩形中的某些所拼凑起来的,(拼凑不能有缝隙), 如果有就找出这样的一组矩形, 否则输出NO大致思路:这题感觉dp还是有点巧妙的, 再就是巴黎枚举每个矩形的左下角是否是要找的正方形的左下角, 利用预处理好的数组来判断是否能继续增加边长原创 2015-03-04 15:29:23 · 1085 阅读 · 0 评论 -
Codeforces 514C Watto and Mechanism Trie树 + dfs
题目大意:现在需要找的字符串S的T的关系为两者长度相同且刚好有1处字符不同就是对于给定的n个字符串(n 大致思路:就是将n个字符串插入Trie树暴搜一下就过了....给出一点可能错的样例吧:Input:3 2abcbbabOutput:NOYESYES代码如下:Result : Accepted原创 2015-02-25 22:44:27 · 927 阅读 · 0 评论 -
Codeforces 514D R2D2 and Droid Army RMQ问题
题目大意:就是现在对于一个m行n列的矩阵, 每次可以选择m行中的任意一行的正整数-1,最多选择k次, 如果某一列中的m个数全部成为了0, 那么这一列算作被破坏, 求被破坏的连续的列 最长是多少列, 并且输出选择各行的次数 (m 大致思路:就是RMQ预处理一下每一行的所有数, 然后二分能够找到的长度判断是否可行即可, 很简单的RMQ问题代码如下:Result :原创 2015-02-25 22:34:21 · 930 阅读 · 0 评论 -
Codeforces 513C Second price auction 数学公式求期望
题目大意:就是n个公司(n 大致思路:纯数学推理做的...有点厉害的样子...数学公式见代码注释代码如下:Result : Accepted Memory : 4 KB Time : 15 ms/* * Author: Gatevin * Created Time: 2015/2/26 10:22:50 * File原创 2015-02-26 11:04:55 · 806 阅读 · 0 评论