-
poj 2082 题目链接 题意:这道题简直就是。。。教给大家怎么把一句话把简单的题让人出得看不懂。。。真的一点意思都没有。给出n个矩形的宽度和高度,这些矩形并排顺次排列在x轴上,问最大面积。 思路:单调栈。 之前的最大矩形面积的宽度都是1.。这次不是1.。做个宽度的前缀和就好。。。1A /* *********************************************** Author :111qqz Created Time :2016年08月03日 星期三 18时54分40秒 File Name :code/poj/2082.cpp …
Read More -
poj 1964 题意:n*m的maze,由'R'和‘F’组成,现在要求找到面积最大的矩形,使得矩形中所有格子都是'F'。 思路:单调栈...一开始神tm tle....复杂度没问题啊。。。 结果看到有人说这题由于数据量比较大。。。scanf会超时。。。所以要用输入挂。。。。。getchar什么的。。。 poj竟然也卡读入。。。人性呢。。。。 改了输出以后再交wa了。 发现想错了,我是写了从(i,j)到两个方向能到的最大距离。。但是这样写有些点上的情况是没有考虑到的。。比如如果(i+1,j+1)上的点是'R',实际上是不可以构成l*r的矩形的(l>=2&r>=2)。。。但是我这样做无法体现。 改了下,变成: 仍然 …
Read More -
poj 3250 题意: n头牛排成一列,第n只牛在最前面,第1只牛在最后面。第i只牛能看到的牛的个数是,它前面的且没有被其他牛遮挡的牛的个数,遮挡的条件是高度大于或者相同。现在问所有牛能看到的牛的个数的和。 思路:单调栈。具体见代码。1A. /* *********************************************** Author :111qqz Created Time :2016年08月03日 星期三 05时12分47秒 File Name :code/poj/3250.cpp ************************************************ */ #include …
Read More -
poj 2559 题意:给定从左到右多个矩形,已知这此矩形的宽度都为1,长度不完全相等。这些矩形相连排成一排,求在这些矩形包括的范围内能得到的面积最大的矩形,求该面积。所求矩形可以横跨多个矩形,但不能超出原有矩形所确定的范围。 思路:单调栈。。。好久没写了,感觉之前一直也没有完全掌握单调栈的技巧。这回一定要掌握。 对于这道题,我们对于每个位置i,用两个单调栈维护出最左边和最右边最远能到达的位置。然后扫一遍更新最大值。 单调栈部分我用了stl 的stack 细节见注释 /* *********************************************** Author :111qqz Created Time :2016 …
Read More -
题目链接 题意:定义一个函数F.. For exampe: _F_(_babbabbababbab_, _babb_) = 6. The list of pairs is as follows: (1, 4), (4, 7), (9, 12) Its continuous sequences are: * (1, 4) * (4, 7) * (9, 12) * (1, 4), (4, 7) * (4, 7), (9, 12) * (1, 4), (4, 7), (9, 12) erfen . erfen 题目描述得很烂..看例子把..大概就是:如果字符串y在字符串x中出现n次,那 …
Read More -
poj 2406 题意:给定一个字符串 L,已知这个字符串是由某个字符串 S 重复 R 次而得到的, 求 R 的最大值 思路:论文题. 转载论文中的题解: 做法比较简单,穷举字符串 S 的长度 k,然后判断是否满足。判断的时候, 先看字符串 L 的长度能否被 k 整除,**再看 suffix(1)和 suffix(k+1)的最长公共** **前缀是否等于 n-k**。在询问最长公共前缀的时候,suffix(1)是固定的,所以 RMQ 问 题 没 有 必 要 做 所 有 的 预 处 理 , 只 需 求 出 height 数 组 中 的 每 一 个 数 到 height[rank[1]]之间的最小值即可。整个做法的时间复杂度为 O(n) …
Read More -
题目连接 题意:求所有不同的子串个数。 思路:后缀数组。和上一道题一样,就是数据范围变成了 5E4...1A /* *********************************************** Author :111qqz Created Time :2016年08月02日 星期二 18时32分28秒 File Name :code/spoj/subst1.cpp ************************************************ */ #include <cstdio> #include <cstring> #include <iostream> …
Read More -
hdu5787 题意:给出l,r,k求区间[l,r]中满足任意相邻k个数字都不相同的数的个数. 思路:数位dp,dp[i][k1][k2][k3][k4]表示长度为i,前1位是k1,前2位是k2,前3位是k3,前4位是k4的方案数. 注意不允许前导0.2A /* *********************************************** Author :111qqz Created Time :2016年08月02日 星期二 16时28分29秒 File Name :code/multi2016/#5/1007.cpp …
Read More -
题目链接 题意:给出一个字符串,问所有不同的字串的个数。 思路:直接求比较困难。我们考虑,假如组成字符串的所有字符都不相同,那么就没有相同的字串,假设字符串的长度为n,那么长度为1的子串有n个,为2的有n-1个。。。为n的有1个,一共就是n*(n+1)/2个。。但是实际上会有重复的。。。 我们再次考虑这张图。 先找一个字符重复的个数,对应height[i]数组就是找height[i]大于等于1个的个数(因为x个height代表了x+1个后缀,保留1个,重复了x个,所以重复的个数恰好和符合条件的height数组对应) 接着找大于等于2的个数,大于等于3的个数... 最后再把所有答案累加起来,就是总共重复的次数。 然后按照我推出的这个结 …
Read More -
poj3261 题意:给一个字符串,要求找出至少出现k次的最长重复子串... 思路:后缀数组,然后再次用到了根据height数组对后缀进行分组的套路...二分判定合法性,对于当前的最长长度x,分组使得每组中的height[i]都大于等于x,所不同的是,判定变成了存在一个组,后缀的个数至少为k个(因为这样,就可以对于大于等于k个的后缀,同时取前x长度,得到的就是出现了至少k次且长度为x的前缀)1A,蛤蛤蛤 /* *********************************************** Author :111qqz Created Time :2016年08月01日 星期一 01时30分34秒 File Name …
Read More