POJ
文章平均质量分 80
Gatevin
这个作者很懒,什么都没留下…
展开
-
POJ 1741 Tree (树分治之点分治)
题目大意:给出一棵树, 点数n 大致思路:马上就要区域赛了...走前看点点分治的题...遵循昊哥的教导这个题就是点分治很裸的一个模型了所谓点分治, 每次将问题递归到子树上解决,为了保证递归层数, 每次选取树的重心来进行分割, 可以证明这样的问题递归层数不会超过O(logn)那么剩下的都直接看的模板了....感觉这个模板好几个dfs之间的关联性好强...有种环环相原创 2015-10-13 23:13:20 · 572 阅读 · 0 评论 -
POJ 2528 Mayor's posters (线段树+离散化 成段替换)
题目大意:就是在一段区间上贴海报, 后来的区间会把前面来的区间覆盖掉, 为贴完海报后能看到几张海报(只看到一部分也算看到)大致思路:就是区间替换更新, 标记一下当前区间的所有的海报是否一致, 用懒惰标记标记一下当前区间的类别听说数据比较水...布吉岛严格的数据下这个代码还能过不= =代码如下:Result : Accepted Memor原创 2015-08-16 22:49:07 · 573 阅读 · 0 评论 -
POJ 1635 Subway tree systems 树的Hash 或 树的最小表示法
题目大意:就是给出从树的中心开始的dfs序, 根据两个dfs序列判断两棵树是否同构大致思路:首先根据dfs一直是从树的中心开始的, 所以不用担心中心的问题, 用树的Hash的话当然可以做另外一个思路是从中心开始的话用树的最小表示法来做, 就是对于子树的字符串表示取字典序排序后的序列, 这样也可以, 当时练练手了...树的最小表示法可以参考这篇博客:戳我代码如原创 2015-07-31 10:46:35 · 1513 阅读 · 1 评论 -
POJ 1625 Censored! AC自动机 + 动态规划 + 高精度
题目大意:就是现在给出N个字符 ( ASCII原创 2014-11-20 16:25:56 · 774 阅读 · 0 评论 -
HDU 2486 (HDU 2580, POJ 3922) A simple stone game K倍动态减法游戏
题目大意:就是现在有一堆石子, 然后先手第一次取走任意数量(至少1颗, 不能取完), 然后双方轮流拿石子的时候, 拿走的数量不能超过上一次被拿走石子数的K倍, 拿走最后一颗石子的人获胜, 给出n, k, 求出先手是否必败, 如果必胜, 则输出第一次应该拿走的最少数量大致思路:首先可以参考2009年国家集训队冬令营论文 : 《从"k"倍动态减法游戏"出发探究一类组合游戏问题》原创 2015-05-11 19:38:11 · 930 阅读 · 0 评论 -
HDU 1517 (POJ 2505) A Multiplication Game 简单博弈
题目大意:就是现在初始 p = 1, 然后两个人轮流进行操作每次可以把p 乘上2~9中的任意一个正整数, 先把 p变成 >= n的人获胜大致思路:首先不难发现对于点k, k >= n的都是P点, 那么所有能到达P点的都是N点, 所以[n / 9, n - 1]是N点, 当然这里n / 9向上取整, 所以写代码的时候注意一下, 那么接下来一段只能到达N点的是P点, 所以[n /原创 2015-05-09 11:35:16 · 761 阅读 · 0 评论 -
HDU 1527 (POJ 1067) 取石子游戏 Wythoff Game
题目大意: 就是Wythoff Game的原型, 每次可以拿其中一堆的任意数量或者两堆同时拿一样的任意数量, 拿走最后一颗石子的人胜大致思路: 首先可以参考这篇Wythoff Game的论文: Wythoff Game 其中提到了一个Beatty Theorem(贝蒂定理): 如果a和b都是无理数,且1a+1b=1,那么{⌊a⌋,⌊2a⌋,⌊3a⌋...}和{⌊b⌋,⌊2b⌋,⌊3b⌋..原创 2015-05-08 11:25:57 · 762 阅读 · 0 评论 -
POJ 1509 Glass Beads 后缀自动机 或 后缀数组
题目大意:就是现在对于一个字符串S, 每次都可以将第一个字符放到最后面, 这样一共有lenght(S)中串, 求这样的床中字典序最小的那个的起始位置是第几个字符时最小大致思路:首先后缀数组的做法不难想到, 就是将S变成SS之后求一遍后缀数组, 扫一遍height数组, 找到第一个sa[i] = 0的那个sa[i],然后对于从这个位置开始的连续的height[i] >= leng原创 2015-04-11 14:57:04 · 1189 阅读 · 0 评论 -
POJ 3415 Common Substrings 后缀数组 + 单调栈维护
题目大意:用A[i, k]表示以字符串第i位开始长度为k的字符串, B[j, k]同理对于给定的字符串A,B和整数K, 求使得A[i, k] == B[j, k]的三元组(i, j, k)的数量, 其中要求k >= K大致思路:很容易想到先将两个字符串连接起来中间用一个没有出现的值隔开, 求后缀数组首先如果我们只考虑对于给定的k == K的三元组数量, 是可以直接根据后原创 2015-02-05 15:51:48 · 668 阅读 · 1 评论 -
POJ 3693 Maximum repetition substring 后缀数组 + RMQ预处理
题目大意:定义一个字符串的repetition number表示这个字符串某个重复出现的子串的出现次数, 每次出现不重合比如abababab是ab重复4次其repetition number是4, 而ababa包含两个有重叠的‘aba’, 只能算repetition number是1(1个‘ababa')给出一个长度不超过100,000的字符串,求出这个字符串的所有子串中repetitio原创 2015-02-09 13:13:51 · 647 阅读 · 0 评论 -
POJ 2828 Buy Tickets (线段树 单点更新 查询右界)
题目大意:就是告诉N个人依次插队的顺序要求输出最终的序列大致思路:对于整个插入倒着执行, 那么前面的插入不会影响后面插入的人记初始数组为[0, 1, 1, 1, ...., 1]一共n + 1个数下标从0到n那么每次就相当于找出当前前缀和大于p的插入(p, value)然后更新找到的位置的值为0即可查询操作用线段树维护, 单点修改也是代码如下:原创 2015-08-15 23:27:03 · 457 阅读 · 0 评论 -
POJ 2886 Who Gets the Most Candies? (线段树 约瑟夫环问题变种)
题目大意:就是现在有一些孩子坐成一圈, 每个人手里有一个数字(正数或者负数), 孩子们编号1~n, n那么, 第一次由编号为K的人跳出, 然后根据其手上的数顺时针或者逆时针决定下一个人第p个出去的人能得到p的约数个糖果, 问那个人得到的糖果最多大致思路:就是约瑟夫环的变种, 每次可能顺时针或者逆时针数出下一个人那么用线段树的结点表示对应区间内还剩下的人的个数于是原创 2015-08-16 01:04:14 · 464 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers (线段树 区间增减 区间求和)
题目大意:中文题面, 就是成段加减, 询问区间和大致思路:练习一下懒惰标记...就是一个简单的懒惰标记向下递推代码如下:Result : Accepted Memory : 4256 KB Time : 1782 ms/* * Author: Gatevin * Created Time: 2015/8/16 19:53:0原创 2015-08-16 20:36:23 · 403 阅读 · 0 评论 -
POJ 3074 Sudoku (DLX解经典数独)
题目大意:给出一个数独求解, 题目保证有唯一解要求每行每列每个九宫格都恰好包含数字1~9大致思路:学习DLX的简单练习构造矩阵的方法如下:一共324列刚开始没考虑到每个格子只能填一个数样例没过, 再加上81列表示每个格子的唯一性才通过样例...矩阵的构造方法见代码注释代码如下:Result : Accepted Memory :原创 2015-10-02 10:03:57 · 1239 阅读 · 0 评论 -
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 · 645 阅读 · 0 评论 -
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 · 1463 阅读 · 0 评论 -
POJ 3237 Tree 树链剖分
题目大意:就是现在给出一棵树, 有边权值, 有3种操作1.询问从点a到b的路径上边权的最大值2.将a到b路径上的所有边的边权值取反3 将第i条边的权值更改为w大致思路:就是很明显的树链剖分的题, 第三道树链剖分的练习题树链剖分之后用线段树维护的时候记录当前区间的最小值和最大值然后利用懒惰标记即可代码如下:Result : Accepted原创 2015-09-08 10:51:21 · 395 阅读 · 0 评论 -
POJ 2763 Housewife Wind 树链剖分
题目大意:就是给出一棵树然后p次操作, 每次操作询问从当前位置到某个位置的路径的权值和, 另外一个操作是修改某条边的权值大致思路:树链剖分第二题...因为写线段树的在建树的时候没有pushUp调试了一个小时才发现....感觉自己智商好捉急.....不过因为这个原因对于树链剖分的过程更熟悉了...首先在处理边的时候, 我们先将边上的信息转移到点上, 这里我们将所有的边原创 2015-09-07 23:40:16 · 324 阅读 · 0 评论 -
POJ 2104 K-th Number 主席树 静态区间第K大
题目大意:就是给出一个静态的序列然后多次询问问某一连续的数中的第k大的数是多少, k也会变化大致思路:主席树学习第一题...这个函数式线段树的思路感觉好巧妙= =对于给出的序列离散化之后对于离散化之后的值域建线段树, 对于序列的每一个前缀都建立线段树, 然后充分利用以前的版本, 使得空间复杂度降到O(nlogn)的级别由于支持访问历史版本, 可以利用减法来得到需要的原创 2015-09-09 20:58:30 · 1121 阅读 · 0 评论 -
POJ 1436 Horizontally Visible Segments (线段树水过)
题目大意:就是现在给出n 大致思路:表示没有想到比较靠谱的计数方法, 用线段树处理出各个线段的可视情况之后如何计数感觉网上说的三重循环枚举的计数方法不可靠但是还没有想到比较好的方法, 先水过去了...注意纵坐标都乘上了2的原因是为了处理这一类情况:前面有线段(2, 0)->(2, 2) 和线段(2, 3)->(2, 5)那么当出现(3, 1)->(3, 4)的时候这原创 2015-08-17 18:56:29 · 428 阅读 · 0 评论 -
POJ 2991 Crane (线段树 维护旋转的向量和)
题目大意:就是多个木棍初始摆在y轴上相邻的木棍间有连接着他们的东西, 相当于关节然后每次操作旋转某个关节, 求旋转后的端点的坐标大致思路:首先将所有的木棍拆成多个向量, 那么考虑到向量的和v1 + v2 + ... + vk即为顶点的坐标, 并且多个向量的和旋转得到的角, 和这所有的向量都旋转同样的角再求和得到的向量是同样的也就是说向量的旋转的时机不影响加法运算于是可以原创 2015-08-18 00:02:31 · 508 阅读 · 0 评论 -
POJ 3225 Help with Intervals (线段树 成段更新, 懒惰标记*2)
题目大意:就是现在模拟实现区间的交并补差一系列操作, 输出最后得到的区间大致思路:首先对于区间开出两倍长度用奇数位表示区间(a, a + 1)偶数段表示端点a, a + 1之类然后对于区间上的操作用0表示这一段在区间中, 用1表示不在那么对于交和并不难映射到对应的区间更改为0和1的操作中但是在处理差的时候需要用到区间取异或值的操作于是需要用到两个懒惰标记, 一个原创 2015-08-17 16:18:03 · 452 阅读 · 0 评论 -
POJ 3294 (UVA 11107) Life Forms 后缀数组
题目大意:给出n( n 求出最长的子串,满足在n个字符串当中出现在一半以上的字符串上, 如果有多个这样的子串,按字典序输出大致思路:简单的后缀数组height数组分组的运用, 首先将所有的串都连接起来, 中间用不同的没有出现在n个字符串中的字符隔开, 然后二分子串长度L判断是否存在满足条件的长度为子串, 对于多个解用vector存储一下其起始位置,最后还原字符串排序后输出即原创 2015-02-03 14:37:21 · 1014 阅读 · 0 评论 -
POJ 3261 Milk Patterns 后缀数组
题目大意:就是现在统计了一头牛N填的奶的产量(话说20000天这牛多少岁了? = =)就是一个长度为N的整数列问其中最长的重复出现次数不小于K的子串的长度是多少大致思路:很明显用后缀数组, 首先考虑到输入的数=L,判断连续次数是否>=K即可,考虑到如果长度为L的可以,那么长度为L - 1的也可以,具有单调性,使用二分即可查找出最长的长度一发AC感觉真好....原创 2015-02-03 13:16:53 · 709 阅读 · 0 评论 -
POJ 2786 Keep the Customer Satisfied 贪心
这题刚开始想成了背包的问题,,后来一直WA,,不知道为什么,然后想了一下原创 2014-07-11 22:19:15 · 803 阅读 · 0 评论 -
POJ 3744 Scout YYF I 概率DP + 矩阵快速幂
题目大意:YYF潜入了敌军原创 2014-07-29 22:08:18 · 748 阅读 · 0 评论 -
POJ 3233 Matrix Power Series 矩阵快速幂 + 二分法
给出矩阵A,最大为30*30,给出k, m原创 2014-06-12 13:31:56 · 755 阅读 · 0 评论 -
POJ 3026 Borg Maze (BFS + MST) (陷阱题)
题目戳这里原创 2014-04-24 16:03:17 · 815 阅读 · 0 评论 -
POJ 1258 Agri-Net 最小生成树
题目大意:给出n的地点,其中原创 2014-07-17 12:16:22 · 718 阅读 · 0 评论 -
POJ 2485 Highways 最小生成树
Prim小练习2题目大意:gei原创 2014-07-17 12:13:32 · 731 阅读 · 0 评论 -
POJ 1789 Truck History 最小生成树
题目大意:给出n个原创 2014-07-17 12:05:02 · 593 阅读 · 0 评论 -
POJ 1328 Radar Installation 贪心
题目大意:以x轴为海岸线,x轴上方为海洋,原创 2014-07-16 15:13:49 · 706 阅读 · 0 评论 -
POJ 1611 The Suspects 并查集
表示刚接触并查集做这道题对并查集原创 2014-04-10 17:34:48 · 673 阅读 · 0 评论 -
POJ 4048 Chinese Repeating Crossbow 简单计算几何
题目大意:就是现在从一点出发可以xai原创 2014-11-15 21:32:33 · 743 阅读 · 0 评论 -
POJ 2778 DNA Sequence AC自动机+矩阵快速幂
题目大意:现在给出m个( 0原创 2014-11-19 11:19:23 · 840 阅读 · 0 评论 -
SPOJ WPUZZLES (POJ 1204) 413.Word Puzzles AC自动机
题目大意:就是现在有一个游戏,给你一个L*C的字符块,只包含大写英文字母,现在你要在这个块中找到给出的所有的英语单词的位置和摆放方向。其中要找的单词在块中只出现一次,(实际上多个要找的块不会重合,这个游戏就是这样...)对于每个要找的字符串,输出其在块中起始位置的坐标和方向,方向只有8种,并且单词摆放不会拐弯..就是一条线摆放大致思路:其实就是个简单的模板题...首先将原创 2014-11-26 19:21:54 · 1286 阅读 · 0 评论 -
POJ 2774 Long Long Message 后缀数组
题目大意:给出两个很长的串(长度分别 大致思路:用后缀数组的话很明显是个水题,将两个串连起来中间用一个没有出现的值隔开然后求出后缀数组和height数组找到sa[i]及sa[i - 1]来自不同的串的时候height数组的最大值即可代码如下:Result : Accepted Memory : 5512 KB Time : 375原创 2015-02-03 12:36:58 · 967 阅读 · 0 评论 -
POJ 1743 Musical Theme 后缀数组 楼教主男人八题之一
题目大意:就是现在用1~88表示钢琴上的88个不同的音符(notes), 现在定义一段旋律(theme)是一串连续的音符组成,判断给出的长度为N( N 输出找到的最大长度的theme,如果不存在满足以上条件的theme,输出0大致思路:后缀数组的论文题= =...听说是楼教主男人八题之一Orz....首先为了避免判断theme的变化, 即使所有theme中的所有note原创 2015-02-02 14:17:25 · 646 阅读 · 0 评论 -
POJ 2406 Power Strings KMP 或 后缀数组
题目大意:就是给出一个串S 长度不超过10^6, 求最大周期使得S = a^n也就是S是有n个字符串a连接起来的,求最大的n(也就是找到最短的a即可)大致思路:首先利用KMP的next数组可以知道循环节的个数, 为n/(n - next[n]) n是S的长度, 这个感觉还是有点晕...另外一个做法是使用后缀数组KMP的做法:代码如下:Result :原创 2015-02-02 20:41:09 · 575 阅读 · 0 评论 -
POJ 1226 Substrings KMP暴力 或 后缀数组
题目大意:就是现在多组测试数据( 大致思路:首先一个简单的想法是用KMP来水过.....暴力枚举最短的那个串的所有子串判断是否满足条件即可..而且用时还很短,能水过另外一个想法是使用后缀数组, 应该算作是正解了= =两个想法各自的代码如下:KMP暴力:暴力枚举最短的那个串的所有子串进行匹配判断即可Result : Accepted Mem原创 2015-02-01 16:47:28 · 729 阅读 · 0 评论