
ACM
文章平均质量分 74
Furney
人的一生中,最光辉的一天并非是功成名就那天,而是从悲叹与绝望中产生对人生的挑战,以勇敢迈向意志那天。
展开
-
POJ 2001 Shortest Prefixes
DescriptionA prefix of a string is a substring starting at the beginning of the given string. The prefixes of "carbon" are: "c", "ca", "car", "carb", "carbo", and "carbon". Note that the empty str原创 2011-12-26 10:44:29 · 685 阅读 · 0 评论 -
POJ 1047 Round and Round We Go 循环数新解
题目描述:给定一字符串表示的高精度数,判断它是否是可循环的。如果假设字符串num的长为n,则将num从1开始乘到n,如果每次得到的结果包含的字符元素都和a是相同的,则它是可循环的。解题思路:初看这一题,想到的解法是利用高精度数的乘,计算出num乘以1到n的结果,再与num进行对比。这种方法较为简单,可以得到正确的结果,但是效率并不是很理想。对于循环数,我们最常见到的是循环小数,而这一题原创 2012-01-02 14:16:31 · 3093 阅读 · 2 评论 -
POJ 1088 滑雪
滑雪问题是最基本的动态规划问题,在解答的过程中重复计算太多,因此需要保存计算过程的中间结果。判断当前点的状态(即最大下降距离)时,如果已经计算出当前点的最大下降距离,进行剪枝(即直接返回该点的最大下降距离)。解题思路:设f[i][j]表示位置i,j上的最大下降距离,如果其周围四个点存在高度比i,j高且最大下降距离大于等i,j的点,则更新当前点的最大下降距离,使其等于周围点中最大下降原创 2011-12-27 11:12:43 · 595 阅读 · 0 评论 -
POJ 1503 Integer Inquiry
题目描述:输入一组以0结尾的超级大数,输出这些超级大数相加的结果。思路:题目较为简单,但是如果直接利用数值类型存储组内数据是行不通的,因此利用字符串存储输入数据,计算结果以字符串输出。#include #include /* * 库函数strrev在本地编译可以通过,但是在OJ编译错误 * 所以还得自己重新编写字符串翻转函数 */void strlrev(char *原创 2011-12-30 15:19:46 · 804 阅读 · 0 评论 -
POJ 1001 Exponentiation
题目描述:计算R的n次方。如果计算的结果有前缀0,输出时将前缀0去掉。如果是小数点右半部分有后缀0,输出时同样去掉后缀0。思路:用字符串存储待计算的数及计算的结果。#include #include using namespace std;/* * 返回两个大数相乘的结果 */string multiple(string a, string b){ string原创 2011-12-30 15:48:13 · 1023 阅读 · 2 评论 -
POJ 2945 Find the Clones
题目描述Doubleville, a small town in Texas, was attacked by the aliens. They have abducted some of the residents and taken them to the a spaceship orbiting around earth. After some (quite unpleasant)原创 2011-12-26 17:02:45 · 955 阅读 · 0 评论 -
POJ 1001 求高精度幂
题目描述:对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。 现在要你解决的问题是:对一个实数R( 0.0 n),其中n 是整数并且 0 解题思路:很简单的一道高精度题目。话不多说直接上代码,过程被写得复杂啦,有很大的改进空间。#include #include using namespace std;string m原创 2012-01-13 06:02:40 · 2578 阅读 · 0 评论 -
POJ 1488 TEX Quotes
题目描述信息较多,但是仔细读完会发现本题所要完成的功能是并不像描述得那么吓人,只是实现给定字符串中指定字符的替换。直接使用string类提供的find_first_of及replace函数就可以解题,具体实现代码如下:#include #include using namespace std;int main(){ string str; int count = 1; whil原创 2012-01-13 06:20:40 · 1393 阅读 · 0 评论 -
POJ 2406 Power Strings
题目描述:给出一个字符串s,求该字符串最多是由多少个重复字符串连接而成。分析:KMP算法每次求得的next值就是当前到i为止的前子串与后字符串相等的子串的长度。#include#includeint main(){ int i, j, len; char str[1000005]; int next[1000005]; while(scanf("%原创 2012-01-11 17:02:28 · 754 阅读 · 0 评论 -
POJ 1326 Mileage Bank
纯模拟,按照题目要求判断,注意小数的取舍即可。具体实现如下:#include #include int main(){ bool flag = false; int actual, sum; char original[100], distance[100], code[10]; while(true) { sum = 0; while(true) { s原创 2011-12-27 14:40:25 · 790 阅读 · 0 评论 -
POJ 1056 IMMEDIATE DECODABILITY
题目大意:给定多组字符串,对每组字符串,如果存在至少一个字符串是其他某些字符的前缀,那么该组字符串是不能immediately decodable,否则是能够immediately decodable。此题如果利用传统的搜索算法,在时间复杂度上不能很好地满足题目要求,因此考虑采用字典树实现。具体实现程序如下:#include #include using nam原创 2011-12-24 15:20:05 · 1089 阅读 · 0 评论 -
POJ 3630 Phone List
题目大意:给出几组电话号码,在某一组号码中,如果存在某一号码为其他号码的前缀,则输出NO,否则输出YES。解题思路:方法一:对每组中的电话号码进行排序,然后再从最短的电话开始与后面的电话号码进行比较,判断当前的电话号码是否是其他某些号码的前缀,直到该组结尾。当问题的规模较大时,这种方法的时间复杂度相对较高,然而空间复杂度则较低。方法二:采用字典树实现对每组号码的存储,再逐一对组中的原创 2011-12-25 22:07:28 · 1788 阅读 · 0 评论 -
ACM小技巧
1.一般用C语言节约空间,要用C++库函数或STL时才用C++;cout、cin和printf、scanf最好不要混用。大数据输入输出时最好不要用cin、cout,防止超时。2.有时候int型不够用,可以用long long或__int64型(两个下划线__)。值类型表示值介于 -2^63 ( -9,223,372,036,854,775,808) 到2^63-1(转载 2012-02-08 20:14:29 · 947 阅读 · 0 评论