TOJ题目分类demo




发信人: RoBa (rerestart) TOJ题目分类+简析 (Demo版) 赞美ROBA

2006/12/30 zz ..from bbs发信人: RoBa (rerestart), 信区: ACM 
标   题: TOJ题目分类+简析 (Demo版) 
发信站: 天大求实BBS (Sat Dec 30 11:32:08 2006), 本站(bbs.tju.edu.cn) 


只有Vol I的内容,而且我还有一些题没有做。。先把大概的样子发一下,大家提个意见,以后就这么写下去了。题号后面的字母表示难度,A最易,E最难。对于我认为有必要写两句的题,都在后面附有简单的解法说明。不在前面列表中的题,说明我没有做过或者做了以后忘了。@@ 

=============================================== 

图论 

1004B 1015A 1026B 1037C 1047B 1050B 1051B 1056B 1059B 1070C 
1075A 1077B 1086B 1091B 

搜索 

1003C 1009C 1016B 1017B 

DP 

1032C 1057B 1068B 1083C 1085B 1098B 1099D 

贪心 

1022B 1044C 1096D 

几何 

1005D 1011B 1024B 1058B 1081E 1087C 1095D 

数论 

1012B 1038A 1046B 1065A 1073A 1079B 1089C 

杂题 

1001A 1002A 1007B 1008B 1010B 1013B 1019B 1020B 1023B 1031A 
1033B 1034C 1035A 1036A 1039B 1049A 1053B 1064B 1069B 1074B 
1082A 1084C 1088A 1090A 1092C 1093A 1100A 

========================= 

1003 Transportation 

搜索,我加的剪枝是先把order按人数从大到小排序,如果搜索时发现后面所有的order都加上也不能超过当前最优解就直接剪掉。 

1005 Pipe 

最优光线一定经过一个上顶点和一个下顶点,枚举经过一对上下顶点的直线,看它能不能向左射穿管道,向右能射到多远。

1007 Joseph 

模拟杀人过程的时候需要一点技巧。或者干脆打表 = =b 

1009 Sticks 

把短棍的长度从大到小排序后搜索,如果当前已经凑齐了整根的长棍,那么下一个选谁都是一样的,只需要选最长的那个短棍进来,不必检查别的了。 

1011 Area 

Pick定理 

1015 Gridland 

猜结论 

1019 Tin Cutter 

离散化 + floodfill 

1020 FORCAL 

编译里面的词法分析 @_@ 

1026 Network 

求割点,背诵算法 

1034 Dividing 

这题一直莫名其妙 

1037 King 

差分约束系统 

1039 Word 

模拟,然后找一下循环节 

1044 Strategic Game 

树型DP或贪心,贪心的方法是在所有的叶子结点的父亲上放一个士兵,然后移除所有 
的叶子结点及叶子结点的父亲,重复上述过程。 

1046 Multiple 

BFS + 同余理论 

1047 Girls and Boys 

黑白染色后求二分图最大匹配 

1050 Courses 

又是二分匹配 

1051 Closest Common Ancestors 

最近公共祖先,硬写都行 @.@ 

1056 Labyrinth 

树的最长路,两遍BFS 

1058 Lifting the stone 

求多边形重心,背诵算法 

1059 Play on Words 

欧拉回路,注意判连通 

1065 Factorial 

实际上找因子5的个数就可以了 

1068 I-keyboard 

DP,用ans[i][j]表示用i个键表示j个字符的最优解,s[i][j]表示把从i到j个字符 
放到一个键的值,那么 
ans[1][j] = s[1][j] 
ans[i][j] = min{ans[i-1][k] + s[k+1][j]} (i-1<=k1) 

1069 Erdos Numbers 

BFS 

1070 Ouroboros Snake 

欧拉回路。对于一个数i,如果它拿掉最高位并在最后补一位能得到j,则从i到j连 
一条边,于是问题实际上是求以0点开始的一条欧拉回路。 

1074 Atlantis 

数据规模比较小,离散化以后硬搞 

1075 Stockbroker Grapevine 

Floyd 

1077 Channel Allocation 

求平面图的点着色数,本来是很好的题,因为数据太水,水掉了 

1081 Paper Cut 

超BT的计算几何,不敢做... 

1083 Fourier's Lines 

很不错的递推题 

1084 The Treasure 

BFS,写起来有点小烦 

1085 Spiderman 

O(N*L)的DP,L是楼房的最大x坐标,居然让我过了 orz 

1086 Pollution 

结论还是容易猜到的,跟点的度有关,呵呵 

1087 Area in Triangle 

当三个角的圆弧半径相等时面积最大 

1089 Happy 2004 

2004^x = 2^(2*x) * 3^x * 167^x 

于是2004^x的所有因数和为 (2^0+2^1+...+2^(2*x)) * (3^0+3^1+...+3^x) * 
(167^0+167^1+...+167^x) 

1091 Finding Nemo 

最短路问题,建图有点小烦 

1092 Searching the Web 

麻烦的处理 

1095 Square 

有结论:如果可以加一个点,这个点应加在正方形中心。如果可以加两个及两个以 
上点,必有两个点在(1/2, sqrt(3)/6) 及 (1/2, 1-sqrt(3)/6)这两点或者旋转90 
度后两点的位置。(类似费马点)更多的点也不会有更好的结果。 

于是对于N>2的情况,枚举连到这两关键点的点,其余的点都连到离它们各自最近距 
离的线段。求最小的距离和。 

1096 Color a Tree 

贪心。这是POJ上的解法: (by gush) 这道题就是要求 Sigma( i * Ci ) (i = 1 .. n) 的值最小,{ Ci } 是节点费用的一个排列,同时要满足父节点要出现在子节点前面。 
如果没有父节点出现在子节点前面这个限制,那么答案很明显。当{ Ci }按降序排列的时候,Sigma的值是最小的。当有这个限制的时候情况也是类似的。考虑某一个可行解,就是{ Ci 
}的某一个排列。找到其中的最大值,比如为Ck,它有一个父节点比如Cp。显然Cp要出现在Ck之前。更进一步,Cp就应该出现在Ck的前一个位置。只有这样才有可能Sigma的值最小。不然我们可以将Ck位置向前移动,得到一个更小的Sigma值,并且不破坏上面的约束。既然Cp就出现在Ck的前 
一个位置,那么它们其实就是连在一起的,可以最为一个整体来看。这样问题的规模就有n减小到n-1。然后重复这一过程,直到所有的位置都确定下来。 
这样我们就找到了最优解。 

1098 The Separator in Grid 

我用DP做的。DP,用ans[i][j]表示第I层的S是否向右移(j取0或1)的最优解。 

1099 The Lost House 

挺麻烦的树型DP。试着写过一次,结果越写越乱。= =b 

你可能感兴趣的:(acm)