数据结构
OMRailgun
这个作者很懒,什么都没留下…
展开
-
SPOJ_MINSUB:Largest_Submatrix(二分+单调栈)
题目大意是说给定一个R*C的非负矩阵,试求出一个包含数字数>=K的子矩阵,使得这个子矩阵中最小的数字最大. 解题思路主要是二分答案,即二分那个最小的数字,然后针对每次二分的值mid,可以将原矩阵根据是否满足A[i][j]>=mid,而转成一个R*C的01矩阵a[][],然后问题求变成了给定一个二维01矩阵,求最大的满1矩阵,可以用单调栈的思想来处理这个子问题,设b[i][j]表示从a[i][j]原创 2016-12-29 23:10:49 · 521 阅读 · 0 评论 -
Codeforces_611D:New_Year_and_Ancient_Prophecy(DP+树状数组)
题意是给定一个n位数字,你现在可以将它分隔成若干个长度更短的数字,例如1234567可以拆分成1234和567两个数字,现在规定一个拆分方案合法当且仅当①拆分出的数字按顺序严格递增②拆除的每个数字是正整数③拆分出的每个数字没有前导0.现在给定n和原来的n位数字,问有多少种合法的拆分方案,答案mod 1e9+7. 设原来的n位数字分别存储在a[1..n]中,设c[i][j]表示的是当前分隔到第j位原创 2017-01-14 23:25:27 · 288 阅读 · 0 评论 -
SPOJ_LEXSTR:Lexicographically_Smallest(并查集)
题意大致是给定一个字符串和m对数(i,j),分别表示字符串的第i个字符和第j个字符(字符串从0标号)可以进行无限次的交换,求问由初始字符串可以得到的字典序最小的字符串是什么. 看完题后,做法呼之欲出.直接用并查集将每对(i,j)并入同一个集合,之后对于每个集合,将其中对应位置上的字母按照字典序重排即可,然后这里为了偷懒,直接用了multiset > #include #include #inc原创 2017-01-15 22:25:21 · 452 阅读 · 0 评论