这个题目真鸡巴罗嗦。
就是紧贴 x 轴有一批互相紧挨着的矩形,给定每个矩形的长宽,问它们可以形成的最大矩形是多少。要的是紧贴 x 轴形成的矩形。
同样用栈来做,将矩形入栈,保持栈中的元素高度递增,如果即将入栈的高度 curh 比栈顶元素的高度 top 小,则退栈。一直退到可以保持栈顶元素高度递增的那个元素 x,在退栈过程中统计由 top 至 x 之间可以形成的最大矩形面积 S,记录由 top 至 x 之间矩形总宽度 w,在弹出这些元素之后再向栈中压入一个高度为 curh,宽度为 w 的矩形,然后继续读入下一个矩形。
最后栈中元素一定是高度递增的,扫描一遍就可以了。
图中 ABCD 分别是两种情况下最大的要求的那个矩形。

Read the rest of this entry »
Tags: 基本问题 , 栈 Published by chenyajun under Category:
POJ
其实就是斐波那契问题。
http://blog.csdn.net/find_my_dream/archive/2009/04/03/4004196.aspx
http://blog.csdn.net/designer_/archive/2010/05/20/5612371.aspx
Tags: 基本问题 Published by chenyajun under Category:
POJ
http://hi.baidu.com/billdu/blog/item/0060c4c54bf583c539db4928.html
你是一个新开发的“魔法检验系统”程序的程序员。现在系统中的一个模块由你开发。首先,数据中给了你一本字典,以“#”结束,单词数不超过10000个,单词的长度不超过15个字符,且均由小写字母组成。之后给了你一些待检验的单词,你需要按照以下规则检查单词。
一、如果单词在字典中出现过,输出“xxx is correct”。
二、如果不然,先输出“xxx:”,然后输出可能的正确单词。
(如果没有可能的正确单词,你必须在冒号后面直接输出回车。)
三、“可能的正确单词”必须满足:在原单词上添加、替换或者删除一个字符之后成为词典中的单词。
直接硬搞。
Read the rest of this entry »
Tags: 基本问题 , 字符串问题 Published by chenyajun under Category:
POJ
对于给定的 M, N,0 < = M <= N,求 N!/(M-N)! 末尾的非零数字。
首先剔除阶乘中 2 和 5, 如果 2 出现的次数肯定比 5 少,那么结尾的非零数字必定是 5,因为 1,3,5,7,9 和 5 相乘之后结尾仍然是 5。
如果 2 出现的次数比 5 多,那就记录下多的次数,3,7,9 自身进行相乘循环实际的循环节都是 4,除了 2 以外。
这样就可以得到结尾非零数了。
如何求出 n 阶乘中质因数x(比如说5)出现的次数?
比如说15的阶乘 :1*2*3*4*5*6*7*8*9*10*11*12*13*14*15
由于 5 这个质因数只在 5 的倍数里面才出现,所以我从 5,10,15 中各抽出一个5,这相当于有 15/5 个质因数5,之后 5,10,15 就变成了1,2,3;
由于非 5 的倍数显然不在考虑范围之内,所以我们只需继续讨论它的子问题3!即可。
int get5(int n)//计算n!中质因子5的出现次数
{
if(n==0)
return 0;
return n/5+get5(n/5);
}
Read the rest of this entry »
Tags: 基本问题 , 数论 Published by chenyajun under Category:
POJ
一个矩阵,求其中一个子矩阵的和。貌似不复杂。
但可以实时算。
Read the rest of this entry »
Tags: 基本问题 Published by chenyajun under Category:
POJ
这就是蚂蚁爬杆的问题,给定 N 个蚂蚁,告知它们的位置,爬动方向,所有蚂蚁的速度都是一样的,问最后哪只蚂蚁最后掉下来。
两个蚂蚁相遇就是碰撞的传递,因此最后掉下来的蚂蚁所走的时间就是距离任意一段最远的蚂蚁所花的时间。
求最后掉下的蚂蚁:这个就要稍微分析一下了,既然我们知道最长时间,而且也知道对应的那个蚂蚁的位置,我们假设这个蚂蚁是最后走出的。(如果它走的方向上没有蚂蚁与他相遇),我们可以让这个蚂蚁开始出发,如果走着走着和某个蚂蚁相遇了,就将与他相遇的那个人认为是最后走出的蚂蚁,以此类推。
Read the rest of this entry »
Tags: 基本问题 Published by chenyajun under Category:
POJ
貌似一个很基本的问题。
http://blog.csdn.net/manio/archive/2006/01/23/586560.aspx
Tags: 基本问题 Published by chenyajun under Category:
POJ
这个题目貌似很简单。就是求 sum(k % i),其中 1 < = i <= n;给定 k 和 n,求这个和。
当然可以直接算,不过会超时,因为 k 和 n 可能很大。
当 k >= n 时,应该将商分组,组中的余数是连续的,可以利用等差数列直接求和。比如 k = 36,n = 17 时,分为以下几组:
36/1;
36/2;
36/3;
36/4;
36/5,
36/6;
36/7;
36/8, 36/9;
36/10, 36/11, 36/12;
36/13, 36/14, 36/15, 36/16, 36/17。
Read the rest of this entry »
Tags: 基本问题 , 数学问题 Published by chenyajun under Category:
POJ
Tags: 基本问题 , 字符串问题 Published by chenyajun under Category:
POJ
基本问题。
给定一个数 S,求一个 N,使得对从 1 到 N 的自然数进行加减之后能得到 S。
Read the rest of this entry »
Tags: 基本问题 Published by chenyajun under Category:
POJ
Tags: DP , 基本问题 , 字符串问题 Published by chenyajun under Category:
POJ
由‘a'到‘z'组成的长度不超过10的的字符串序列(字符不重复,且按字典序排序,否则输出0)word所在的位置。
例:a = 1; b = 2; …… z = 26;
ab = 27, …… az = 51;
bc = 52, ……vwxyz = 83681;
思路:组合数学com(n, m) = com(n - 1, m) + com(n - 1, m - 1)的应用。
Read the rest of this entry »
Tags: 基本问题 , 组合数学 Published by chenyajun under Category:
POJ
给定一个偶数 n,求 n 位 lucky tickets 的个数,lucky tickets:n 位数可含前导 0,前 n/2 项上数字和等于后 n/2 项上数字和。
Read the rest of this entry »
Tags: 基本问题 Published by chenyajun under Category:
POJ
有N个路段(N< =100000),每个路段要么是上坡路要么是平路要么是下坡路。记走完一段上坡路、平路、下坡路所需的时间分别为U,F,D。现在告诉你N段路的路况。规定要在限定的时间内回到起点,问最多能走完几个路段?
这里可以一边读入一边计算:每次读入一个路段,如果这个路段是上坡路或者下坡路,就把剩余时间减去U+D,否则减去2*F。如果当前时间不足就输出前一段路的编号并退出。时间复杂度是O(N)。
Read the rest of this entry »
Tags: 基本问题 Published by chenyajun under Category:
POJ