[转]ACM国际大学生程序设计竞赛试题与解析

[转]ACM国际大学生程序设计竞赛试题与解析

入门三本:
《数据结构与算法》(傅清祥,王晓东编著,我所见过的最好的算法教材)
程序设计导引及在线实践 作者: 李文新
ACM程序设计培训教程 吴昊

基础提高:
算法艺术与信息学竞赛 第二版 刘汝佳
算法设计与分析 王晓东
算法设计与试验题解 王晓东
科曼:《算法导论》
组合数学 第三版 冯舜玺 译
计算几何-算法设计与分析 周培德
国际信息学奥林匹克竞赛指导— — 实用算法的分析与程序设计  吴文虎 王建德

网络算法与复杂性理论 谢政 李建平
《Concrete Mathematics --- A Foundation For Computer Science》 Ronald L. Graham , Donald E. Knuth , Oren Patashnik《具体数学》(能买到中文版最好)
《计算机程序设计艺术》三卷 Knuth 
组合数学的算法与程序设计
《程序设计中的组合数学》 吴文虎
图论的算法与程序设计
图、网络与算法

国际大学生程序设计竞赛辅导教程 郭嵩山 崔昊

《ACM国际大学生程序设计竞赛试题与解析》全部册(吴文虎著,清华大学出版社)
C算法.第1卷,基础、数据结构、排序和搜索(第三版)
C算法(第2卷图算法第3版中文版)译者:周良忠 (美国)塞奇威克著 
国际大学生程序设计竞赛例题解 四本 郭嵩山


      请所有的新队员认真完成以下各题。如果做题遇到困难,如题意难以理解、不知如何着手或不知错在哪里,不要气馁,可以请教别的队员,也可请教教练。我们会尽力帮助你完成这几组中每一道题。但不要复制别人的程序,即便参考了别人的程序,也要亲自再完成一遍。而且不建议过多参考别人程序,这样会消弱训练的效果,也减少了思考的乐趣。

      有些队员可能觉得某些题太简单,但我们还是建议将它们都做掉。因为题目虽然简单,但是再简单的题目都不能保证一次做对,而做错题的各种原因如题意理解错误,格式错误等你都会碰到。了解这些原因对减少错误率很有好处。

做题前请了解一些规范:

1. main函数应为int型,最后return 0 ,即:

 int main()

{

return 0;

}

 

这样做是因为避免有些编译器报错。

2. 为了便于核对,请在代码开头加上可以表明题目的注释,如:

    //ZJU1001; /*PKU1002 */等

 

 

Group  0 :热身

再次提醒:做对后别忘提交到训练系统.
编号         来源         题号         标题         评注
        三道都是A
+ B,而且有样例程序。请自己做一遍,不要拷。
0.1          ZJU          1001          A + B Problem
0.2          PKU          1000          A + B Problem
0.3          TOJ          1000          熟悉一下Online Judge的环境

Group 1:起步

 

Group  2 :英文题( 1

     以下是ZJU上的题目,ZJU的题都是英文的,有些题难度可能不比上面一组高。但对新队员来说,理解题意本身可能是个难点。 
编号         来源         题号         标题         评注
2.1          ZJU          1048          Financial Management
        只比A
+ B难一点
2.2          ZJU          1045          HangOver         这一道和下面两道都是简单的计算
2.3          ZJU          1049          I Think I need I boat          
2.4          ZJU          1813          Biker ' s Trip Odometer          
2.5          ZJU          1057          Undercut          
2.6          ZJU          1113          u Calculate e         没有输入,但要注意格式
2.7          ZJU          1151          Word Reversal         简单的字符串处理
2.8          ZJU          1195          Blowing Fuses         别看题有些长,但其实很简单
2.9          ZJU          1755          Clay Bully          
2.10          ZJU          1760          Doubles        

 

 

 

Group  3 :英文题( 2

    下面这些题可能稍微难一些,但与上面一组难度上并没有本质区别。只要仔细想想,应当不难做出。
编号         来源         题号         标题         评注
3.1          ZJU          1489           2 ^ x mod n  =   1           
3.2          ZJU          1712          Skew Binary          
3.3          ZJU          1016          Parencodings          
3.4          ZJU          1350          The Drunk Jailer          
3.5          ZJU          1051          A New Growth Industry         这三题可能比较繁琐,做的时候要仔细
3.6          ZJU          1178          Booklet PrintingBook
3.7          ZJU          1078          Palindrom Numbers

 

Group  4 :TOJ前20题中剩余题 

 

 

Group  5 :基础题继续练习

再补充一些适于基本功练习的题目,供大家继续打好C(C
++ )与语言基础。

有些题目需要一些数学推算,但都不会超出你们的知识范围。
编号         来源         题号         标题         评注
5.1          ZJU          1763          A Simple Question of Chemistry         极简单
5.2          ZJU          1915          Above Average
        极简单
5.3          ZJU          2104          Let the Balloon Rise         极简单
5.4          ZJU          2201          No Brainer         极简单
5.5          ZJU          2208          To and Fro         极简单,只要读懂题
5.6          ZJU          1797          Least Common Multiple
        想一想如何有效率地求最大公约数和最小公倍数
5.7          ZJU          1629          Counting Triangles          
5.8          ZJU          2015          Number Sequence         注意数列的周期性
5.9          ZJU          1657          Goldbach ' s Conjecture          
5.10          ZJU          1871          Steps          
5.11          ZJU          1858          Soundex         
5.12          ZJU          1622          Switch          
5.13          ZJU          1160          Biorhythms          
5.14          TOJ          1022          数制转换         要注意如何读入数据
5.15          TOJ          1010          数素数
        注意质数判定的效率

 

 

Group  6  高精度运算练习

高精度运算也是基本功之一。

以下各题都牵涉到高精度运算,许多涉及数制转换。但也需注意其它方面。

做题时注意模块化。做完这些题后,你会发现很多功能可以重用。
6.1          ZJU          1272          Numerically Speaking         有样例程序
6.2          ZJU          1292          Integer Inquiry         高精度加法
6.3          ZJU          1205          Martian Addition
        高精度加法,但不是十进制
6.4          ZJU          1073          Round and Round We Go         高精度乘法
6.5          ZJU          1086          Octal Fractions         高精和数制转换
6.6          ZJU          1154          Niven Numbers
        高精和数制转换,注意,长度题目中未明确给定。如果设固定长数组,先设50.如果运行时溢出再往上加。
6.7          ZJU          1210          Reciprocals         高精度除法,同时注意输出格式要求
6.8          ZJU          1962          How Many Fibs ?
        高精度加法,以及比较
6.9          ZJU          2017          Simple Arithmetics         涉高精加,减,乘,且格式处理较繁
6.10          ZJU          2241          Fractran         表示一个大数不仅可以用各位数,也可以用它的各因子。这题就是一

 

 

Group  6 : 模拟类题目专项练习

所谓模拟类题目,就是那些题目详细描述了完成某一过程的步骤,你只须严格按照要求模拟这一过程即可。

这类题目通常不需要很复杂的算法设计,但有些题十分繁琐,稍不小心就会出错。另外,对题意的准确把握也是关键,特别是这些步骤的细节方面,一定要完全搞清楚,不能自己乱猜。

下面的一些模拟类题目都是比较繁琐的,大家做它们时一定要细心,且有足够的耐心。


编号         来源         题号         标题         评注
6.1          ZJU          1072          Microprocessor Simulation          
6.2          ZJU          1208          Roll the Die !           
6.3          ZJU          1710          The Snail          
6.4          ZJU          1723          Board Silly          
6.5          ZJU          1737          Unreliable Message
         
6.6          ZJU          1824          Maze Traversal          
6.7          ZJU          1834          AutoFish
         
6.8          ZJU          1862          Mine Sweeper
         
6.9          ZJU          2240          Run Length Encoding

 

 

Group  7 : 新一组练习
这一组题目较综合,难度不一。(题目下载)
编号         来源         题号         标题         评注
7.1          ZJU          1068         P,MTHBGWB          
7.2          ZJU          1146         LC - Display          
7.3          ZJU          1243         URLs
7.4          ZJU          1115         Digital Roots          
7.5          ZJU          1180         Self Numbers          
7.6          ZJU          1337         Pi          
7.7          ZJU          1312         Prime Cuts
7.8          ZJU          1326         M * A * S * H
        建议用链表做
7.9          ZJU          1494         Climbing Worm          
7.10          ZJU          1577         GCD  &  LCM          
7.11          ZJU          2122          A Flea on a Chessboard
7.12          ZJU          1628         Diamond          
7.13          ZJU          1630         Die          
7.14          ZJU          1517         Grandpa ' s Rubik Cube
7.15          ZJU          1161          Gone Fishing         (新加)贪心经典,可以后再做
           

 

 

Group  8 : 字符串处理
编号         来源         题号         标题         评注
8.1          ZJU          1099         HTML          
8.2          ZJU          1318         Table         样例数据
8.3          ZJU          1116          A Well - Formed Problem          
8.4          ZJU          1324          Unix ls         用C语言的用scanf读数据
8.5          ZJU          1295          Reverse Text          
8.6          ZJU          1392          The Hardest Problem Ever          
8.7          ZJU          1325          Palindromes          
8.8          ZJU          1404          Oil Pipeline          
8.9          ZJU          1884          WERTYU          
        

 

Group  9 :
编号         来源         题号         标题         评注
9.1          ZJU          2388          Beat the Spread !           
9.2          ZJU          2376          Ants         努力得猜吧
9.3          ZJU          2358          Sum of Factorials         注意0的阶乘
9.4          ZJU          2345          Gold Coins          
9.5          ZJU          2321          Filling Out the Team          
9.6          ZJU          2397          Tian Ji  --  The Horse Racing         经典贪心
9.7          ZJU          2316          Matrix Multiplication         线性代数,加组合数学
9.8          ZJU          2301          Color the Ball         离散化坐标
9.9          ZJU          2330          A ^ ==  B ^ A ?          高数题
9.10          ZJU          2329          AB Circle          
9.11          ZJU          2313          Chinese Girls '  Amusement          
      

 

Group  10 :

这组题据金强说是简单题。


编号         来源         题号         标题         评注
10.1          ZJU          2417          Lowest Bit          
10.2          ZJU          2405          Specialized Four - Digit Numbers          
10.3          ZJU          2481          Unique Ascending Array          
10.4          ZJU          2478          Encoding          
10.5          ZJU          2421          Recaman ' s Sequence          
10.6          ZJU          2416          Open the Lock
10.7          ZJU          2482          IP Address          
10.8          ZJU          2401          Zipper          
10.9          ZJU          2480          Simplest Task  in  Windows          
10.10          ZJU          2478          Total Amount          
10.11          ZJU          2256          Mincost         贪心
10.12          ZJU          2258          Number Sequence II         构造
           

 

专题1:递归运用初步
      对递归的介绍,请看这里。

     递归的应用总是和深度优先搜索联系到一起。这里先请看两篇有关的文章,一篇中文的,一篇英文的。

      看了这两篇文章,应当对深度优先的基本概念有些了解。请结合样例程序仔细体会8皇后问题的解法。这是很经典的深度优先搜索问题。

以下是一些问题的样例程序:
整数拆分
组合问题
全排列
八皇后问题

 

    理解这些程序若有困难,我们会详细讲解它们。理解后,请自己再编一遍。

下面是一些有关它们的练习。

关于这方面的题目很多,我们会不断添加。

Group Z1:递归和深度优先搜索初步

 

 

 

Group  11 : 搜索初步

深度优先搜索和广度优先搜索是属于常用的搜索技术。前者用到递归,后者涉及队列。

深度优先搜索对于解决某些问题并不一定是最好的,但很容易实现,有时也十分有效,它的难点在于如何剪枝优化。出现在递归初步中的题目可以算是深搜的一种。

广度优先搜索技术的结构相对固定,但节点的判重也是个难点。由于时间效率的原因,广度优先搜索运用得更为广泛。

下面是关于它们的一些练习。
编号         来源         题号         标题          
11.0          ZJU          2416          Open the Lock
        广度优先。(样例程序)
11.1          ZJU          1091          Knight Moves         最简单的广度优先搜索问题,但包括了这类方法的所有要素。
11.2          ZJU          1005          Jugs         典型的广度优先
11.3          ZJU          1649          Rescue         广度优先在迷宫问题中的应用
11.4          ZJU          1002          Fire Net         这些都是可以运用深度优先的题目。有些需要很好的剪枝。
11.5          ZJU          1003          Crashing Balloon
11.6          ZJU          1004          Anagrams by Stack

 

 

Group  12 : 深度优先搜索

下面是关于深度优先搜索(DFS)的一些练习。
编号         来源         题号         标题          
12.0          PKU          1256          Anagram
        生成不重复排列
12.1          ZJU          1711          Sum It Up         生成不重复组合
12.2          ZJU          2412          Farm Irrigation         初步,有的需要剪枝
12.3          ZJU          1694          Shredding Company
12.4          ZJU          1457          Prime Ring Problem
12.5          ZJU          1204          Additive equations
12.6          ZJU          2192          T - shirt Gumbo         进阶,有序搜索与剪枝
12.7          ZJU          1909          Square
12.8          ZJU          1987          Vase Collection
12.9          ZJU          1937          Addition Chains
12.10          ZJU          1984          Genetic Code
12.11          ZJU          2110          Tempter of the Bone
12.12          ZJU          1179          Finding Rectangles         难题,需要很好搜索策略和剪枝技巧
12.13          ZJU          1411          Anniversary
12.14          ZJU          1008          Gnome Tetravex
12.15          ZJU          1499          Increasing Sequences

 

 

 

Group  13 : 广度优先搜索
下面是关于广度优先搜索(BFS)的一些练习。
编号         来源         题号         标题          
13.0          ZJU          1438          Asteroids !          三维迷宫,想想如何控制方向
13.1          ZJU          2050          Flip Game         可以尝试一下位运算
13.2          ZJU          2081          Mission Impossible         可以用BFS + DFS
13.3          ZJU          1310          Robot         进阶,稍难一点
13.4          ZJU          1671          Walking Ant
13.5          ZJU          1940         

Dungeon Master
13.6          ZJU          1103          Hike on a Graph
13.7          ZJU          1358          Moving Object Recognition
13.8          ZJU          1217          Eight         难题,注意状态的表示与哈希
13.9          ZJU          1227          Free Candies
13.10          ZJU          1505          Solitaire
13.11          ZJU          1361          Holedox Moving

 

Group  14 : 图 -- 遍历(Graph Traversal)、传递闭包(Transitive Closure)
编号         来源         题号         标题          
14.0          ZJU          1221          Risk         用BFS也可以解决最短路径问题
14.1          ZJU          2165          Red and Black         基于网格的连通性分析
14.2          ZJU          1589          Professor John         传递闭包,也可以用DFS
14.3          ZJU          1085          Alien Security          
                

 

 

Group  15 : 图 -- 拓扑排序(Topological Sort)、关节点(Articulation Point)
编号         来源         题号         标题          
15.0          ZJU          1060          Sorting It All Out          
15.1          ZJU          1119          SPF          
15.2          ZJU          1311          Network          
       

 

 

Group  16 : 图 -- 最小生成树(Minimum Spanning Tree)
编号         来源         题号         标题          
16.0          ZJU          1406          Jungle Roads          
16.1          ZJU          1203          Swordfish          
16.2          ZJU          1542          Network          
16.3          ZJU          1586          QS Network         要注意节点权值
16.4          ZJU          1372          Networking         要注意重复边
16.5          ZJU          1914          Arctic Network         想想为什么可以用最小生成树 ?
16.6          ZJU          2158          Truck History         想想如何转化为最小生成树 ?
16.7          ZJU          2048          High Ways         基于连通分量的最小生成树
16.8          ZJU          1718          Building a Space Station          
16.9          PKU          1258          Agri - Net          
        

 

 

 

Group  17 : 图 -- 最短路径(Shortest Path)
编号         来源         题号         标题          
17.0          ZJU          1053          FDNY to the Rescue !           
17.1          ZJU          1609          Equivalence          
17.2          ZJU          1082          Stockbroker Grapevine          
17.3          ZJU          1655          Transport Goods         边权值有些特别
17.4          ZJU          1092          Arbitrage          
17.5          ZJU          1967          Fiber Network         想想如何利用Floyd三重循环 ?
17.6          ZJU          1456          Minimum Transport Cost         有些难度的最短路径题
17.7          ZJU          2008          Invitation Cards         带最小堆的Dijkstra
17.8          ZJU          1765          Which Way Do I Go ?          综合题,比较复杂
17.9          ZJU          1232          Adventure of Super Mario         

 

Group  18 : 图 -- 回路问题(Euler Path  &  Hamilton Tour)
编号         来源         题号         标题          
18.0          ZJU          1105          FatMouse ' s Tour          
18.1          ZJU          2016          Play on Words         可转化为判定欧拉路的存在性
18.2          ZJU          1130          Ouroboros Snake         可以转化为欧拉路
18.3          SCU          1286          First Love         可以转化为欧拉路
   

 

 

Group  19 : 图 -- 二部图匹配(Bipartite Matching)
编号         来源         题号         标题          
19.0          ZJU          1140          Courses          
19.1          ZJU          1137          Girls and Boys          
19.2          ZJU          1157          A Plug  for  UNIX          
19.3          ZJU          1364          Machine Schedule          
19.4          ZJU          1197          Sorting Slides          
19.5          ZJU          1525          Air Raid          
19.6          ZJU          1059          What ' s In a Name          
19.7          ZJU          1516          Uncle Tom ' s Inherited Land          
19.8          ZJU          1654          Place the Robots          
19.9          ZJU          1509          Family          
            

 

 

Group  20 : 图 -- 网络流(Network Flow)
编号         来源         题号         标题          
20.0          PKU          1273          Drainage Ditches         典型的网络最大流
20.1          ZJU          1734          Power Network         可转化为网络最大流
     

 

 

Group  21 : 图 -- 差分约束(Difference Constraints)
编号         来源         题号         标题          
21.0          ZJU          1260          King          
21.1          ZJU          1420          Cashier Employment          
21.2          ZJU          1455          Schedule Problem          
21.3          ZJU          1508          Intervals          
       

 

 

Group  22 : 图 -- 其它
编号         来源         题号         标题          
22.0          ZJU          1015          Fishing Net         弦图判定
22.1          ZJU          1492          Maximum Clique        

求最大团,经典NP hard
22.2          ZJU          1576          Marriage  is  Stable     稳定婚姻,延迟认可算法

 

 

你可能感兴趣的:(ACM)