TopCoder
文章平均质量分 72
xuzhezhaozhao
这个作者很懒,什么都没留下…
展开
-
TopCoder入门教程 -- sqybi完善版
原文地址:http://sqybi.com/blog/archives/25本文根据经典的TC教程完善和改编。TopCoder:http://www.topcoder.com/基本规则TopCoder的比赛类型很多,最常见的是周赛SRM(Single Round Match),另外还有TCHS SRM(TopCoder High School SRM,题目和SR转载 2013-06-09 17:42:11 · 3372 阅读 · 0 评论 -
记首次参加TopCoder SRM Match,SRM 582
今天第一次参加了TopCoder SRM Match,SRM 582,开始前还蛮紧张的,因为是第一次参加,没有rating,只能参加division II,要求是要在80分钟内完成三个难度梯度的题目,分值分别是250, 500, 1000。250分的题目相当简单,5、6分钟就搞定了,提交后分数还好,有230多分,心情稍稍放松,之后打开500分值的题目,发现TopCoder的题目描述都挺有意思的,一原创 2013-06-14 22:48:06 · 1799 阅读 · 0 评论 -
SRM 212 Div II Level Two: WinningRecord,Brute Force
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=3003&rd=5858比较简单。代码如下:#include #include #include #include using namespace std;#define Rate(win, i) ( (double)(win) / (do原创 2013-07-06 21:06:16 · 1104 阅读 · 0 评论 -
SRM 212 Div II Level Three: LargestCircle,Brute Force
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=3005&rd=5858与这篇Test SRM Level Three 一样。原创 2013-07-06 21:08:34 · 882 阅读 · 0 评论 -
SRM 207 Div II Level One: TransportCounting
题目来源:http://community.topcoder.com/tc?module=ProblemDetail&rd=5853&pm=2928这道题目看上去比较简单,但正解率只有70%,主要是要注意一下Example 4,起始位置为0的车也要算进去,所以Example 4答案是3而不是2。代码如下:#include #include using namespace原创 2013-07-07 18:44:39 · 1017 阅读 · 0 评论 -
SRM 207 Div II Level Three: CaptureThemAll,BFS算法
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=2915&rd=5853内容在这篇博文中。原创 2013-07-07 21:30:21 · 849 阅读 · 0 评论 -
SRM 207 Div II Level Two: RegularSeason,字符串操作(sstream),多关键字排序( 比较函数 )
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=2866&rd=5853主要是要对字符串的操作要熟悉,熟练使用 sstream 流可以大大简化操作,如这个题目,如果不用sstream 流的话,用 sscanf 函数非常麻烦,因为输入的数据中数字的个数不是一样的,还有一个问题就是多关键字的排序,用 sort原创 2013-07-07 21:27:21 · 1148 阅读 · 0 评论 -
SRM 583 Div Level Two:IDNumberVerification
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12610这道题比较有意思,估计是中国人出的吧,以前都不知道身份证还这么麻烦,不过程序不难写。#include #include #include #include #include #include #include #include #i原创 2013-06-23 00:52:15 · 1166 阅读 · 0 评论 -
SRM 222 Div II Level One: TextCompressor,求最大重复子串问题
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=3442&rd=5868用的是Brute Force 方法,搜索了所有的子串,所以效率极低,但题目限制了最大字符串长度为50,所以这种方法在时间上可以接受,而且这道题目只是Level One 250分的题目。更好的算法可以看 这篇博客,使用动态规划原创 2013-07-09 23:00:17 · 1213 阅读 · 0 评论 -
SRM 219 Div II Level One: WaiterTipping,小心约分
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12609&rd=15503这题目看上去so easy, 但写的时候要特别小心,如果直接按照公式算,没有加下面这一句的话: if (total + total * taxPercent / 100 + (tip + 1) * total / 100 <= m原创 2013-07-09 22:16:49 · 1118 阅读 · 0 评论 -
SRM 584 Div II Level Two: Egalitarianism,DFS,BFS算法
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12613&rd=15696这个题目应该是一道典型的利用DFS和BFS的题目,将每个人看成是图中的点,Friend关系看成图的边。用DFS判断该图是否是连通图,如果该图不是连通图,则说明其中至少有一个人是孤立的,也就是他的值可以为任意数,即应返回 -1。原创 2013-07-10 23:56:04 · 1152 阅读 · 0 评论 -
SRM 583 Div II Level Three:GameOnABoard,Dijkstra最短路径算法
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12556用Dijkstra实现,之前用Floyd算法写了一个,结果在2s内算不出结果来。参考了别人算法,学到了set容器的一个用法,用set省去了查找Dijkstra算法中选择最短路径的那一步,set中的第一个元素就是最小值,用priority queue原创 2013-06-23 01:02:54 · 1739 阅读 · 0 评论 -
SRM 582 Div II Level Three: ColorTheCells, Brute Force 算法
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12581Burte Force 算法,求解了所有了情况,注意 next_permutation 函数的用法。#include #include #include #include using namespace std;class Col原创 2013-06-23 00:46:36 · 1314 阅读 · 0 评论 -
SRM 582 Div II Level Two SpaceWarDiv2
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12556#include #include #include using namespace std;int F[50];class SpaceWarDiv2{public: int minimalFatigue(vector ma原创 2013-06-23 00:40:43 · 1301 阅读 · 0 评论 -
TC(SRM)和CF入门教程for ACMer
原文地址:http://www.cnblogs.com/zhsl/archive/2013/01/10/2854957.html一、TC基本介绍TC的网址www.topcoder.com/tc,我们一般提到TC的时候是特指其中的Single Round Match(SRM)。SRM的规则总结起来就是一句话:75分钟做完3道难度递增的题。TC的每个用户(handle)都有自己的积分(转载 2013-07-11 10:08:59 · 2603 阅读 · 0 评论 -
使用批处理将特定字符串之间的内容删掉,配合TopCoder中ExampleBuilder插件使用
之前装了一个TopCoder的插件:ExampleBuilder,具体可以看这篇博客。这个插件会自动生成测试代码,但是提交的时候要手动删除多余的测试代码,感觉特别麻烦,于是就写了一个批处理文件,可以自动将多余的代码删除,删除后的代码就可以直接提交。因为用到了linux下的sed命令,所以要下载一个windows版本的sed工具,下载地址如下:http://sourceforge.net/p原创 2013-07-11 17:06:01 · 1519 阅读 · 0 评论 -
SRM 219 Div II Level Two: HealthFood
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=3118方法比较直接,用swicth判断选择标准,如果结果唯一的话,则返回,否则判断下一个标准!代码如下:原创 2013-07-15 22:06:25 · 1043 阅读 · 0 评论 -
SRM 584 Div Ii Level Three: Excavations2, Dynamic Programming
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12644这道题目其实就是个排列组合的问题,用数学的语言表述就是:有n (found的大小)个箱子,每个箱子中有若干个不同的小球,箱子中的小球分别数量为a1, a2, a3, ...., an,现要从这n个箱子中取K个小球,K>=n,且至少要从每个箱子中取一个小球,问有多少种取法?如果你高中数学学的扎实的话,那应该可以推导出一个数学公式,就像这里(点击)这个大神给出的解释一原创 2013-07-16 21:47:34 · 1146 阅读 · 0 评论 -
SRM 222 Div II Level Two: GroceryBagger,STL map 用法
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=3450这个题目其实很简单,只要得到每种物品的数量就可以了,用一般的方法也可以做,不过如果使用STL中map容器的话,那真是轻松加惬意啊!主要是map重载了[]运算符,所以操作起来特别方便。代码如下:#include #include #原创 2013-07-17 11:43:47 · 1249 阅读 · 0 评论 -
SRM 223 Div II Level Two: BlackAndRed,O(N)复杂度
题目来源: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)。不过还有一个更高效的方法,其时间复杂度为O(N),只需进行一次原创 2013-07-17 14:14:44 · 1127 阅读 · 0 评论 -
Test SRM Level Two: CountExpressions, Brute Force
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=8157这道题目跟扑克牌算24的题目比较像,但要简单一些。点击查看 next_permutation 函数 的用法,使用这个函数减轻了不少工作量,而且算法很简洁明了。代码如下:#include #include #include usin原创 2013-07-02 14:07:44 · 1494 阅读 · 0 评论 -
SRM 299 Div II Level Two: Projections
题目来源: http://community.topcoder.com/stat?c=problem_statement&pm=6041主要是判断什么情况下会占用最小和最大的格子, 其实自己画个图很容易就找的出来.代码如下:#include #include #include using namespace std;/************** Pr原创 2013-07-18 14:15:29 · 1024 阅读 · 0 评论 -
SRM 233 Div II Level Two: PipeCuts
题目来源: http://community.topcoder.com/stat?c=problem_statement&pm=3994比较简单, 搜索全部情况.代码如下:#include #include #include using namespace std;/************** Program Begin *******************原创 2013-07-18 14:10:04 · 1045 阅读 · 0 评论 -
TopCoder: SmartWordToy BFS算法
题目:SmartWordToy思路:4个字母的单词有26 ^ 4种组合,可以看成是26 ^ 4种状态,用BFS搜索最短步骤。代码如下:/* * TopCoder: SmartWordToy (http://community.topcoder.com/stat?c=problem_statement&pm=3935&rd=6532) * Author: xuz原创 2013-06-02 14:16:52 · 1449 阅读 · 0 评论 -
TopCoder: CaptureThemAll BFS算法
题目来源:CaptureThemAll思路:knight在棋盘每个位置上有三个状态,一是没有吃到rook和queen,二是吃到了rook,没有吃到queen,三是吃到了queen,没有吃到rook,全部吃到的话搜索结束,则knight工共有3 * 64个状态,64为棋盘位置数,故采用BFS算法,代码如下:之前的代码有一点问题,现修改如下:/** * TopCoder:原创 2013-06-04 00:10:49 · 1320 阅读 · 0 评论 -
TopCoder: WalkingHome BFS算法
题目来源:WalkingHome与RevolvingDoors解法类似。/* * TopCoder: WalkingHome * Author: xuzhezhao * E-mail: zhezhaoxu@gmail.com * Blog: http://blog.csdn.net/xuzhezhaozhao * Time: 2013/6/8 */#inc原创 2013-06-08 22:42:41 · 1205 阅读 · 0 评论 -
TopCoder: RevolvingDoors BFS算法
题目来源: RevolvingDoors感觉这道题比前两道应用BFS算法的题目要难一些,不像之前的那么直接,如果这道题目要求的是最短的频数的话,那跟前两道就差不多了,但这里求的是最少旋转门的次数,这就有点复杂了,我的思路如下:1. 判断当前位置是否是终点,不是则搜索由当前位置可以到达的旋转门,并将旋转之后的结果状态存入LD链表尾。2. 从LD链表中取出第一个元素作为当前状态,重原创 2013-06-07 17:19:31 · 1552 阅读 · 0 评论 -
Test SRM Level Three: LargestCircle, Brute Force
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=3005&rd=5858思路:如果直接用Brute Force搜索所有可能的圆的话,那么搜索空间将很大,所以我用了一个priority_queue结构,将搜索的顺序变为按圆的半径从大到小搜索,所以当搜索到符合条件的圆时,即可停止搜索。这样可以大大减少搜索范围,不过对于最坏的情况,也就是没有符合条件的圆时,还是会将所有的可能情况都搜索到。原创 2013-07-03 14:27:38 · 1130 阅读 · 0 评论 -
SRM 483 Div II Level Two: MovieSeating, TopCoder上正确率不到%10的题
题目来源: http://community.topcoder.com/stat?c=problem_statement&pm=11035&rd=14236这道题目在TopCoder的比赛的数据中正确率不到%10, 我一开始觉得题目挺简单, 就是一个简单的排列组合问题, 但做完提交后, system test 挂掉了, 一看挂掉的测试数据, 原来是当参数numFriends为1的时原创 2013-07-19 13:18:43 · 1200 阅读 · 0 评论 -
SRM 577 Div II Level Two: EllysRoomAssignmentsDiv2
题目来源: http://community.topcoder.com/tc?module=ProblemDetail&rd=15497&pm=12521这个问题要注意的就是只需要直接将参数ratings中字符串连接起来就可以, 不用在每个元素后面加空格. 我开始就以为每个元素连接的时候在后面要加空格分隔, 然后再把重复的元素去掉, 结果system test出错了, 调试半天原创 2013-07-19 15:00:07 · 1408 阅读 · 0 评论 -
SRM 585 Div II Level Two: TrafficCongestionDivTwo
题目来源: http://community.topcoder.com/stat?c=problem_statement&pm=12697分析题目, 画一画, 就可以找到规律了, 然后就很简单了.代码如下:using namespace std;long long h[61];class TrafficCongestionDivTwo {public: long long theMinCars(int treeHeig原创 2013-07-22 21:43:34 · 1524 阅读 · 0 评论 -
SRM 585 Div II Level Three: EnclosingTriangleColorful
题目来源: http://community.topcoder.com/stat?c=problem_statement&pm=12694&rd=15697这题目还是有一定难度的, 如果按照一般的思路, 遍历所有可能的三角形, 每个三角形再检查是否满足要求, 可以用判断斜率的方法检查, 这样的话最多需要4*300*300*300*50次操作, 会超过时间限制, 事实也确实如此, 我原创 2013-07-22 22:02:05 · 1828 阅读 · 0 评论 -
SRM 578 Div II Level Two: GooseInZooDivTwo, DFS
题目来源: http://community.topcoder.com/stat?c=problem_statement&pm=12545可以将地图看成是一个图, 实际上就是用DFS搜索整个图有多少个子图. 也就是需要调用多少次DFS才能将图遍历.代码如下:#include #include using namespace std;/************** Pr原创 2013-07-23 21:48:06 · 1318 阅读 · 0 评论 -
SRM 586 Div II Level Three: StringWeightDiv2,Dynamic Programming or Math
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12695解析:https://apps.topcoder.com/wiki/display/tc/SRM+586这道题目当时比较的时候没有做出来,当时感觉是用dp,不过还是太水了,完全不知道怎么搞,后来看别人代码发现都是基本都是用的排列组合原理做的,觉得自原创 2013-08-01 19:07:50 · 1194 阅读 · 0 评论 -
SRM 579 Div II Level Two: UndoHistory
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12523模拟每个步骤,用set保存history字符串。代码如下:#include #include #include #include #include #include #include #include #include #in原创 2013-07-28 01:42:48 · 1418 阅读 · 0 评论 -
SRM 578 Div II Level Three: WolfInZooDivTwo,Dynamic Programming,求教!
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12533这道题目没做出来,知道用动态规划,不过不知道怎么搞,参看这里的解答懂了,不过看别人的代码的时候发现有个更简洁的解法,看了半天没有看懂,主要就是dp那一步不知道是怎么来的,贴出来求教一下,哪位大神看懂了话望指点一下,代码如下:#inclu原创 2013-07-30 10:28:19 · 1456 阅读 · 0 评论 -
SRM 587 Div II L3:ThreeColorabilityEasyy
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12699这道题目是第一次在比赛的时候做出来的,开始还想用brute force,后来发现那太复杂了,于是在纸上画了画,发现一个规律,那就是只有在一个2x2的cell中,如果出现3个N或3个Z方式的cell,那么这种情况下肯定是无法配色成功,因为最后一定会有两个原创 2013-08-05 08:43:15 · 1529 阅读 · 0 评论 -
SRM 581 D2 L3:TreeUnionDiv2,Floyd算法
题目来源:http://community.topcoder.com//stat?c=problem_statement&pm=12587&rd=15501这道题目开始以为是要在无向图中判断环,而且要找出环的大小,后来看了解析之后才发现原来使用一个Floyd算法就搞定了,因为题目中加了很多限制,并不真的需要在一个任意的无向图中求 指定大小的环的数量。生成所有的排列组合可以使用C++ S原创 2013-08-09 21:23:19 · 1144 阅读 · 0 评论 -
SRM 581 D2 L2:SurveillanceSystem,重叠度
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12588在判断 ‘+’ 的时候使用了 重叠度 的概念,跟一般的 “先去掉这个位置,看剩下的位置能不能符合条件” 方法不太一样。代码如下:#include #include #include #include #include #includ原创 2013-08-09 21:14:06 · 1934 阅读 · 0 评论 -
SRM 576 D2 L2:ArcadeManao,DFS,善于根据实际问题使用最简便的方法
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12504这是个典型的图论的题目,很容易就能把题目抽象的图论的描述:求连接两点的所有 路径中权值最大的边 的最小值。但求解起来非常麻烦。如果换一个角度来思考,根据实际题目的要求,只需要计算当梯子长度从 0 到 N-1 时起点和终点是否能够连通,那么最先符合条件的原创 2013-08-11 22:51:48 · 1172 阅读 · 0 评论