题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=3457&rd=5869 解答分析:http://community.topcoder.com/tc?module=Static&d1=match_editorials&d2=srm223 这道题目最直接最暴力的算法就是遍历每个位置,然后查看是否满足条件,满足条件的话则立刻停止遍历, 这样算法的时间复杂度为O(N^2).不过还有一个更高效的方法,其时…
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=2866&rd=5853 主要是要对字符串的操作要熟悉,熟练使用 sstream 流可以大大简化操作,如这个题目,如果不用 sstream 流的话,用 sscanf 函数非常麻烦,因为输入的数据中数字的个数不是一样的,还有一个问题就是多关键字的排序,用 sort 函数时要自己写比较函数. 另外那个得到实现四则运算的方法也很巧妙,我刚始用的方法比较麻烦,这种方法看别人…
题目来源: http://community.topcoder.com/tc?module=ProblemDetail&rd=15497&pm=12521 这个问题要注意的就是只需要直接将参数ratings中字符串连接起来就可以, 不用在每个元素后面加空格. 我开 始就以为每个元素连接的时候在后面要加空格分隔, 然后再把重复的元素去掉, 结果system test出错了, 调试半 天不知道什么问题. 而且题目是面也说了, 没有相重复的数据. 由此可见, TopCoder上有些题目看似简单,…
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12580 比较简单,代码如下: #include <iostream> #include <string> #include <cmath> using namespace std; class SemiPerfectSquare { public: string check(int N); }; string SemiPerfectS…
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12556 #include <iostream> #include <vector> #include <algorithm> using namespace std; int F[50]; class SpaceWarDiv2 { public: int minimalFatigue(vector <int> magica…
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12581 Burte Force 算法,求解了所有了情况,注意 next_permutation 函数的用法. #include <iostream> #include <vector> #include <limits> #include <algorithm> using namespace std; class Col…
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12609 #include <iostream> #include <string> using namespace std; string minstr = ""; class SwappingDigits { public: string minNumber(string num); }; string SwappingDi…
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12556 用Dijkstra实现,之前用Floyd算法写了一个,结果在2s内算不出结果来. 参考了别人算法,学到了set容器的一个用法,用set省去了查找Dijkstra算法中选择最短路径的那一步,set中的第一个元素就是最小值,用priority queue应该也可以. #include <iostream> #include <string>…
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12609&rd=15503 这题目看上去so easy, 但写的时候要特别小心,如果直接按照公式算,没有加下面这一句的话: if (total + total * taxPercent / 100 + (tip + 1) * total / 100 <= money) { ++tip; } 那么因为公式涉及向下约分的运算,那么所得到的tip的值可能是比最大值…
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=1692&rd=5858 比较简单. 代码如下: #include <iostream> #include <vector> using namespace std; class YahtzeeScore { public: int maxPoints(vector <int> toss); }; int YahtzeeScore…