27
Programming Challenges The Programming Contest Training Manual 程序设计竞赛训练手册 Steven S. Skiena Miguel A. Revilla 刘汝佳 清华大学出版社

程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

Programming Challenges The Programming Contest Training Manual

挑 战 编 程 程序设计竞赛训练手册

Steven S. Skiena Miguel A. Revilla 著

刘汝佳 译

清华大学出版社

北 京

Page 2: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

English reprint edition copyright © 2009 by Springer-Verlag and TSINGHUA UNIVERSITY PRESS.

Original English language title from Proprietor’s edition of the Work.

Original English language title: Programming Challenges: The Programming Contest Training Manual by Steven S. Skiena, Miguel A. Revilla, Copyright © 2009.

All Rights Reserved.

This edition has been authorized by Springer-Verlag (Berlin/Heidelberg/New York) for sale in the People’s Republic of China only and not for export therefrom.

本书影印版由 Springer-Verlag 授权给清华大学出版社出版发行。

本书封面贴有清华大学出版社防伪标签,无标签者不得销售。

版权所有,侵权必究。侵权举报电话:010−62782989 13701121933

图书在版编目(CIP)数据

挑战编程:程序设计竞赛训练手册/(美)斯基纳(Skiena, S. S.), (西)雷维拉(Revilla, M. A.)著; 刘汝佳译. —北京: 清华大学出版社,2009.7 书名原文:Programming Challenges:The Programming Contest Training Manual ISBN 978−7−302−19797−3

Ⅰ. 挑… Ⅱ. ① 斯… ② 雷… ③ 刘… Ⅲ.程序设计 Ⅳ.TP311.1

中国版本图书馆 CIP 数据核字(2009)第 045370 号

责任编辑: 啟龙 铭 责任校对:徐俊伟

责任印制:

出版发行:清华大学出版社 地 址:北京清华大学学研大厦A座

http://www.tup.com.cn 邮 编:100084 社 总 机:010−62770175 邮 购:010−62786544 投稿与读者服务:010−62776969, [email protected] 质量反馈:010−62772015, [email protected]

印 刷 者: 装 订 者: 经 销:全国新华书店 开 本:185×230 印 张:20.25 字 数:450 千字 版 次:2009年7月第1版 印 次: 2009 年 7 月第 1 次印刷 印 数: 定 价:0.00元

本书如存在文字不清、漏印、缺页、倒页、脱页等印装质量问题,请与清华大学出版社出

版部联系调换。联系电话:010−62770177 转3103 产品编号:030502−01

Page 3: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

仅 以 此 书 献 给 我 们 的 妻 子 们 Renee 和

Carmela , 以 及 孩 子 们 Bonnie , Emilio 还 有

Miguel。和书中的难题相比,抽出时间来陪伴这些

我们所爱的人更具挑战。

Page 4: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

� � �

��������������������������������������

����������������������������������������

���������������������������������������

����������������������������������������

������������������������

�������������������������������������

������������������������� (����)�� �����

���������������������������������������

�����������������

��������������������������������

�������������������� ��������������

�������� �����������������������

���������� ��� ���� �����������

���� Steven S. Skiena ��������� UVaOJ ���� Miguel A. Revilla ���

��������������������������������

����������������������������������

�����������������������������

Page 5: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

� �

������������ ����������� ������������

��� ���������������� ������� �����

� ���� �����������������������������

�������������� ������� “���”�

� ��������������������������������

������������ ����������������� ����

��������������������������������������

�������������������������������� �����

����������������

���������������������������

���

������� Valladolid�������� (http://uva.onlinejudge.org/) ���

���������������������� 27 000 �������������

������������������������������

������������������������ (�������) �

��� ���������������������������

�������������� ������������ ���������

�������� ��������������������

�����������������������������������

���������������������������������������

�����������������

����������������������������������

�������������������� �����������������

���

��������������������� �����������

������������������������� ����������

������������������

Page 6: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

· vi · � �

���

�����������������

• ���������• ���������• ����� ACM/ICPC(ACM � ���������) � IOI(� � ����

) �����

����������������������������������

������������������ ����������������

“��” � ��������������������������������

���������� �����������������������

�������������������������������� ��

����������������� ��������������������

�������� ������������������������ �

����������� �� �

• �����������—— ��������������������

������ ������������������� (���) ������

�� ����� ���������������������� ���

�������

• �����������—— ������ ������� ���� �

�����������������������������������

����� C ���������� C++ � Java�����������!

��������������� ������������������

• ��������—— ��������� ��������� �������

����������������������������������

http://www.programming-challenges.com �������������������

������������������

• �����������—— �����������������������

��������������� ����� ����������������

�����������

�����������������������������������

����� (A, B, � C) ����!����������(low ����high ��

�) ��������� �������������� (� 1 � 4�������

�����) ��������� ��

Page 7: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

� � · vii ·

��������

����������������������������������

����������������������������

������� ACM/ICPC������������������������

�������������� C�C++�Pascal � Java ����� �������

���������������������� ��������������

���

���������������������——ACM� ���������

(ICPC)�� � ���� (IOI)�TopCoder ����� —— � ��������

���� ������������"�������#�����������

�$����

��� 80%� ACM/ICPC ���� Valladolid����������ICPC��

� ��������%��������������������%�

����

����

����������������� http://www.programming-challenges.com

�������������� ������������������

������������

������� (��������) ���� Valladolid ��������http://

uva.onlinejudge.org/ �������������������� ID ����

���

��

���������� �����������������������

����������������� ����! 17 ������� Gordon

Cormack � Shahriar Manzoor���� Sam Loyd � H. E. Dudeney1���

��������������������� ������������Gordon

Cormack (38�), Shahriar Manzoor (28), Miguel Revilla (10), Pedro Demasi (8), Manuel Carro

(4), Rujia Liu(��) (4), Petko Minkov (4), Owen Astrakan (3), Alexander Denisjuk (3), Long

Chong(�) (2), Ralf Engels (2), Alex Gevak (1), Walter Guttmann (1), Arun Kishore (1),

Erick Moreno (1), Udvranto Patik (1) �� Marcin Wojciechowski (1)����������

������������������

1 ���������������������������

Page 8: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

· viii · � �

�����������������������������������

�������������&�������������������������

���

��������������������Ciriaco Garcıa ����������

����������������Fernando P. Najera���������� ����

������Carlos M. Casas �����������������������Jose

A. Caminero � Jesus Paul������������������� ���

Miguel Revilla, Jr������� http://www.programming-challenges.com�

���� Stony Brook 2002����������������� Vinhthuy Phan

� Pavel Sumazin ������������������������� (Larry

Mak, Dan Ports, Tom Rothamel, Alexey Smirnov, Jeffrey Versoza � Charles Wright) ���

���������� �����Haowen Zhang����������������

� � ��������������

�� Springer-Verlag � Wayne Yuhasz, Wayne Wheeler, Frank Ganz, Lesley Poliner �

Rich Putter� �������������������������� Gordon

Cormack, Lauren Cowles, David Gries, Joe O’Rourke, Saurabh Sethia, Tom Verhoeff, Daniel

Wright� Stan Wagon����������������������Fulbright Foun-

dation � Valladolid ����������������������������

����Citigroup CIB��� Peter Remch � Debby Z. Beckman �������� Stony

Brook��� ACM ICPC �������������������

Steven S. Skiena

Stony Brook, NY

Miguel A. Revilla

Valladolid, Spain

Page 9: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

� �

���

��

� 1 � �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1 �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1

1.2 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.1 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

1.2.2 �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.2.3 � '�'� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5

1.3 ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6

1.4 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.5 ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.6 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.6.1 3n + 1 � (3n+1 Problem) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.6.2 �� (Minesweeper) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12

1.6.3 � (The Trip). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13

1.6.4 ����� (LC-Display) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.6.5 � �� (Graphical Editor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.6.6 �(� (Interpreter) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.6.7 �� (Check the Check) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17

1.6.8 �� �� (Australian Voting) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.7 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.8 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

� 2 � ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.1 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22

2.1.1 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.1.2 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.1.3 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.1.4 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Page 10: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

· x · � �

2.1.5 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.2 ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.2.1 C++ � ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.3 ���� ��� �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.4 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.5 ���'�'� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.6 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.7 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

2.8 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.8.1 ������ (Jolly Jumper) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.8.2 � � (Poker Hands) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.8.3 �� (Hartals) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.8.4 �� (Crypt Kicker) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

2.8.5 ��� � (Stack’em Up). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38

2.8.6 Erdos � (Erdos Numbers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

2.8.7 ����� (Contest Scoreboard) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

2.8.8 Yahtzee � (Yahtzee) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

2.9 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.10 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

� 3 � ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

3.1 ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

3.2 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49

3.3 ���� ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

3.4 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

3.5 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

3.6 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

3.7 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54

3.8 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

3.8.1 WERTYU �� (WERTYU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

3.8.2 ���� (Where�s Waldorf?) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

3.8.3 ���� (Common Permutation). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .58

3.8.4 �� II(Crypt Kicker II) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

3.8.5 ������ (Automated Judge Script) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

3.8.6 ���� (File Fragmentation). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62

3.8.7 Doublet �� (Doublets) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Page 11: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

� � · xi ·

3.8.8 Fmt �� (Fmt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

3.9 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

3.10 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

� 4 � �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

4.1 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

4.2 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

4.3 ��������)��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

4.4 �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71

4.5 �)��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

4.6 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

4.6.1 Vito �� (Vito�s Family) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75

4.6.2 ��� (Stacks of Flapjacks) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

4.6.3 �� (Bridge) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

4.6.4 ������ (Longest Nap) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

4.6.5 !���� (Shoemaker�s Problem). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79

4.6.6 CDVII ���� (CDVII) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

4.6.7 ���� (ShellSort) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81

4.6.8 � (Football (aka Soccer)) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

4.7 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

4.8 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

� 5 � ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86

5.1 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

5.1.1 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

5.2 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

5.3 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

5.4 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94

5.5 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

5.5.1 ���� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

5.5.2 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

5.5.3 ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

5.6 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

5.6.1 ��� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

5.6.2 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

5.7 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

5.8 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

Page 12: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

· xii · � �

5.9 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

5.9.1 ����� (Primary Arithmetic) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

5.9.2 ���� (Reverse and Add) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

5.9.3 ������ (The Archeologist�s Dilemma) . . . . . . . . . . . . . . . . . . . . . . . . . 103

5.9.4 �� 1 ���� (Ones) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

5.9.5 ��� (A Multiplication Game) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

5.9.6 ������ (Polynomial Coefficients) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

5.9.7 Stern-Brocot��� (The Stern-Brocot Number System) . . . . . . . . . . . . . . 105

5.9.8 ���� (Pairsumonious Numbers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

5.10 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

5.11 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

� 6 � ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

6.1 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109

6.2 ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

6.3 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

6.4 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113

6.5 �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

6.6 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

6.6.1 ������ (How Many Fibs?) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

6.6.2 ���� (How Many Pieces of Land?) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

6.6.3 �� (Counting) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

6.6.4 ���� (Expressions). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118

6.6.5 ��*�� (Complete Tree Labeling) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

6.6.6 ����� (The Priest Mathematician) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

6.6.7 ����� (Self-describing Sequence) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

6.6.8 � � (Steps) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

6.7 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

6.8 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

� 7 � �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123

7.1 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

7.1.1 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

7.1.2 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124

7.2 ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125

7.2.1 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125

7.2.2 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127

Page 13: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

� � · xiii ·

7.3 ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127

7.4 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

7.4.1 �� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

7.4.2 ������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

7.4.3 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

7.5 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

7.6 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

7.6.1 � � (Light, More Light) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

7.6.2 Carmichael� (Carmichael Numbers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

7.6.3 ���� � (Euclid Problem) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

7.6.4 ���� (Factovisors) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

7.6.5 ���� (Summation of Four Primes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

7.6.6 Smith � (Smith Numbers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

7.6.7 !! (Marbles) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

7.6.8 ���� (Repackaging) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

7.7 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

7.8 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

� 8 � ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

8.1 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138

8.2 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140

8.3 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141

8.4 ���������� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

8.5 ���� " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144

8.6 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

8.6.1 ����� (Little Bishops) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

8.6.2 15 � � (15-Puzzle Problem) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

8.6.3 �� (Queue) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

8.6.4 ��� (Servicing Stations) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

8.6.5 �� (Tug of War) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

8.6.6 �"� (Garden of Eden) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

8.6.7 ����� (Color Hash). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153

8.6.8 ����� (Bigger Square Please...) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

8.7 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

8.8 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

Page 14: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

· xiv · � �

� 9 � ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

9.1 ���+� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157

9.2 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158

9.3 � ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

9.3.1 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

9.3.2 ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163

9.3.3 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

9.4 � ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

9.4.1 ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

9.4.2 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

9.5 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

9.6 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

9.6.1 ��� (Bicoloring) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

9.6.2 ���� (Playing With Wheels) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

9.6.3 #� (The Tourist Guide) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

9.6.4 "�� (Slash Maze) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

9.6.5 �� � (Edit Step Ladders) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

9.6.6 ����� (Tower of Cubes) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176

9.6.7 ������ (From Dusk till Dawn) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177

9.6.8 ���!����(Hanoi Tower Troubles Again!) . . . . . . . . . . . . . . . . . . . . . . . . 179

9.7 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

� 10 � ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

10.1 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

10.1.1 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

10.1.2 ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

10.1.3 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182

10.1.4 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

10.2 ����* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

10.3 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .186

10.3.1 Dijkstra �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

10.3.2 ��������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188

10.4 �������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

10.5 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

10.5.1 �� (Freckles) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

10.5.2 �� (The Necklace) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

Page 15: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

� � · xv ·

10.5.3 ��� (Fire Station) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

10.5.4 �� (Railroads) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

10.5.5 �� (War) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

10.5.6 #� (Tourist Guide) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

10.5.7 �,��! (The Grand Dinner) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

10.5.8 ������ (The Problem With the Problem Setter) . . . . . . . . . . . . . . . . . 203

10.6 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

� 11 � ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206

11.1 -���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

11.2 �"� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

11.3 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

11.4 �"���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

11.5 ���������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

11.6 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

11.6.1 ������(Is Bigger Smarter?) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

11.6.2 ������ (Distinct Subsequences). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219

11.6.3 ����� (Weights and Measures) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

11.6.4 �� TSP(Unidirectional TSP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

11.6.5 ����� (Cutting Sticks) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

11.6.6 $�� (Ferry Loading) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

11.6.7 �� (Chopsticks) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

11.6.8 ������� � (Adventures in Moving: Part IV). . . . . . . . . . . . . . . . . .224

11.7 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

11.8 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

� 12 � �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

12.1 #��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

12.1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227

12.1.2 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

12.2 �������"��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229

12.2.1 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229

12.2.2 �"��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230

12.3 ��������!%��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

12.4 �!�� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

12.5 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

12.6 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

Page 16: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

· xvi · � �

12.6.1 ������ (Ant on a Chessboard). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236

12.6.2 ��� (The Monocycle). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237

12.6.3 ��# (Star) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239

12.6.4 �� Maja(Bee Maja) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

12.6.5 �$� (Robbery) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

12.6.6 (2/3/4)-�����((2/3/4)-D Sqr/Rects/Cubes/Boxes?) . . . . . . . . . . . . . . 242

12.6.7 Dermuba �� (Dermuba Triangle) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

12.6.8 �� (Airlines). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244

12.7 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

� 13 � �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

13.1 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

13.2 ������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

13.2.1 ������ !�� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251

13.2.2 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

13.2.3 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

13.3 ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

13.4 ����������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255

13.5 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

13.6 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

13.6.1 "��. (Dog and Gopher) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

13.6.2 /������(Rope Crisis in Ropeland!) . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

13.6.3 !��� (The Knights of the Round Table) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

13.6.4 ���� (Chocolate Chip Cookies) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .261

13.6.5 ��&� (Birthday Cake) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

13.6.6 ��/���#� (The Largest/Smallest Box ...) . . . . . . . . . . . . . . . . . . . . . . . 263

13.6.7 ������(Is This Integration?) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

13.6.8 �����(How Big Is It?) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .265

13.7 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266

� 14 � ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277

14.1 �'���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

14.2 �"��$��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .278

14.3 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

14.4 ��������� � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274

14.4.1 Van Gogh �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274

14.4.2 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

Page 17: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

� � · xvii ·

14.4.3 ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

14.5 ������ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

14.5.1 ���% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

14.5.2 ���"�� Pick �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279

14.6 ����� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

14.7 �� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

14.7.1 ���� (Herding Frosh) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

14.7.2 �%�� � (The Closest Pair Problem) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

14.7.3 �&'� (Chainsaw Massacre) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

14.7.4 ��� (Hotter Colder). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .283

14.7.5 �������� (Useless Tile Packers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

14.7.6 ��� (Radar Tracking) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

14.7.7 (��* (Trees on My Island) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

14.7.8 ���� (Nice Milk) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

14.8 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

�� A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

A.1 ACM � ��������� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

A.1.1 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

A.1.2 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292

A.2 � � ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293

A.2.1 ��� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293

A.2.2 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

A.2.3 � . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

A.3 Topcoder.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

A.4 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

A.5 ���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297

���� . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300

Page 18: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

�1� � �

��������������������������������������

����������������������������������������

����������������������������������������

�������

��������������������������������������

����������������������������������������

�������������������

1.1 ��������

�������� Miguel Revilla ����������������������

� (The Programming Challenges judge)http://www.programming-challenges.com�����

����� Valladolid �������� (The Universidad de Valladolid judge)http://uva.

onlinejudge.org/ ����������������������

�������������������������������������

��������������������������������������

����������� ���������������������������

�������������������������1�

���������������������������������� ���

����������������������������������

���������� (http://www.programming-challenges.com) ���������

����� ���������������� Valladolid�������� (http://

uva.onlinejudge.org/) �����������������������������

� Web �������������

1.1.1 ������

������ “����” ��������������������� (problem

specification) ��������������������������������

1 ����������Valladolid ���������������� �������������

������

Page 19: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

· 2 · � 1 � ��

����������������������������������

�����

� ACM ��������� (ACM/ICPC) ���������������

��������

• Accepted (AC ) — ���������������������������

����

• Presentation Error (PE ) — ������������������������

�������������������

• Accepted (PE ) — ���������������������������

�����������������������������������

������������������������������ ���

���

• Wrong Answer (WA) — ������������������ ���

��������������������� �

• Compile Error (CE) — �������������������������

����������������������

• Runtime Error (RE) — ������������������� (segmentation

fault)���� (floating point exception) �����������������

�������������� � � (invalid pointer reference) ����

(division by zero)�

• Time Limit Exceeded (TL) — �����������������������

������������������������������������

��

• Memory Limit Exceeded (ML) — �������� ���������� �

���

• Output Limit Exceeded (OL) — ����������������������

����������������

• Restricted Function (RF ) — ���� ����� �����������

fork()fopen()����������

• Submission Error (SE) — ��� �������������� ID

������

������������������������������������

���������������������������������������

������� ��������������������������

���������������������������������������

Page 20: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

1.2 ���� � · 3 ·

�������� � ���

���������������������������������

������������

1.2 ������

������������ ��������������� C�C++�Pascal

� Java ����������������� ����������������

���������������������� (problem-solving)��������

���������������� ��������������������

���������������

1.2.1 ������

����������������������������������

• Pascal — � 20 �� 80��� �����������Pascal��� ����

���������������������������������� ��

��������

• C — � UNIX ���� ����C ������������������

������������������ � �������������20

�� 90��������������� C ����������������

� · · ·• C++ — ����������������������������� C ���

����� ���������� ��C++��� 20�� 90������

���������������� ���������� · · ·• Java — �������������������������� �����

�������������� ����

������������������������������������

���������������������������������������

����������� Java ����

� 2002 � 12 �������� ���� 1 250 000 ��������������

C++������������� C������ ����� Java������

��� 2001 � 11 ����� Java ���

1.1 ��������������� C ������������� 1999 �

�� C++ ��� ���������������

Page 21: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

· 4 · � 1 � ��

1.1 2002 � 12 ����������� ����

� 1-1 2002 � 12 ������������

�� �� AC PE WA CE RE TL ML OL RF

C 451447 31.9% 6.7% 35.4% 8.6% 9.1% 6.2% 0.4% 1.1% 0.6%

C++ 639565 28.9% 6.3% 36.8% 9.6% 9.0% 7.1% 0.6% 1.0% 0.7%

Java 16373 17.9% 3.6% 36.2% 29.8% 0.5% 8.5% 1.0% 0.5% 2.0%

Pascal 149408 27.8% 5.5% 41.8% 10.1% 6.2% 7.2% 0.4% 0.4% 0.5%

�� 1256793 29.7% 6.3% 36.9% 9.6% 8.6% 6.8% 0.5% 1.0% 0.6%

1.2.2 ���������

�������������������������������

���http://www.programming-challenges.com������������������

���������������������������������

������� C ��������������������������

�������C��� C++��������� Java���������������

���������� C ���������� ��� �����!��� �

����������������� ��

������������������������

• ���� — C �������� (call-by-value)����������������

����������������������� ��������

��� ���������������� �� ������� �� �

���������� �����

����� ������������ � x � � &x�� � p �

���� ∗p�������� “���” ����������������

Page 22: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

1.2 ���� � · 5 ·

���

• ���� — C �������������� int�float� char������

������� long � double��������������� int ���

• �� — C ����������� 0 � n− 1��� n ������������

�������� 1 ����������� n + 1 �������C���

�������������������� �������

������������������������ 0 ��� C ����

�������� 1�������������������������

�������������������������������������

������������

• ���— C������������������� (��)���%�

����������� (logical-and)��� (logical-or)��� && � ||�1.2.3 ������

UNIX������������������� ������������

���������������� �������������������

������������ �������

��� “ ����”��������� (graphical user interface)�����

��������������� “ � - ��” ��������������

������ ��������������������������� “�

���” �����������

����� ACM/ICPC ������������ ���� (standard input)

��������������� (standard output) ����������������

�����������������������2�

������ (standard input/output) ��� C�C++ � Pascal�������

�� 1.2 ����������������������������

������������������������������������ �

� ����������������������������

��������������� I/O ������������������

��������������������������� ��������"�

(manual) ����������� ��� (parsing) ���� (formatting)�

�����Java������������http://www.programming-challenges.com�

��� 35 �� Java ���������� ����������http://uva.

2 ����������������� ��� ��������� �������� ���

ONLINE JUDGE ��� ��

Page 23: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

· 6 · � 1 � ��

onlinejudge.org/���

1.2 C (�)�C++ (�)�Pascal () ��������

1.3 � � � �

������������������������������ ����

������ (variable)����� (� if-then-else, case)����� (� for-do,

while-do, repeat-until)���� (subroutine) ��� (function)����������

� �������������������������

����������������������������������

�������������������������������������

��� “����” ��������������������������

������������ �����������������������

��������������������������������������

���!��������������������������

����������������������������������

������� ��������

• ���� — �������������������������

���������������������������#������

������������������ �#�� ����������� ��

�������������������� ������"�������#

Page 24: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

1.3 ��� · 7 ·

��������$��������������������

• ��������� — �%������������#���������

�����������������������������������

���������� ������������������������

������������� ������

• ��������� — ������������ (����������

��� �) ��������� �������������������

����� �������������������������

� �������������� �����&������ · · ·• �������� — ���� (���������� (true, false))�����

������������������������������������

� (club)��� (diamond)��� (heart) ��� (spade)�

switch(cursuit) {

case ’C’:

newcard.suit = C;

break;

case ’D’:

newcard.suit = D;

break;

case ’H’:

newcard.suit = H;

break;

case ’S’:

newcard.suit = S;

...

� ������ (’C’,’D’,’H’,’S’)������� (C,D,H,S) � ���

��������������������

• ����������� — ����������� � �� �������

� ������

...

while (c != ’0’) {

scanf("%c", &c);

if (c == ’A’) {

if (row-1 >= 0) {

Page 25: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

· 8 · � 1 � ��

temp = b[row-1][col];

b[row-1][col] = ’ ’;

b[row][col] = temp;

row = row-1;

}

}

else if (c == ’B’) {

if (row+1 <= BOARDSIZE-1) {

temp = b[row+1][col];

b[row+1][col] = ’ ’;

b[row][col] = temp;

row = row+1;

}

}

...

�����������������������������

������������������������������ + � −������� �������� “����” �������������

�������

• ���������� — ��������������� ��������

������������������������������������

��������������������� �����������

������������������������� �������&��

����� ���

������������������������ (object-oriented program-

ming)�����������������������������������

�� ������������������������������������

����������� (������) ����������

�������������������������������������

���������� �

1.4 ������

��������������'�������� ������������

������! ������

Page 26: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

1.4 ������ · 9 ·

���"���������������������������������

������������������������� ����������

��(���������� ��������!� (Ebola virus) ����)�

(bubonic plague)�������������� ���� ��� (aspiron)�

�����������������* (balanced binary search tree)����(exception handling)����� (parallel processing) ����� (object inheritance) ��������������������������������"�

������� ����������������������������

������������������� ����������������

����������������� �

�������������������������� ���������

� �����������������������������

• �� — �����������������������!���

������������������������������ (record)3

�����������������������������������

(sentinel)���������������+"�������������� �������������������������� n ��

������ a ����� x ������������������ ���

��������

i = n;

while ((a[i]>=x) && (i>=1)) {

a[i+1] = a[i];

i=i-1;

}

a[i+1] = x;

i = n;

a[0] = SMALLINT

while (a[i] >= x) {

a[i+1] = a[i];

i=i-1;

}

a[i+1] = x;

��������� a[0] ������������ �� SMALLINT

�+"�����+"������� ��������� ������

�����

• ���� — �����������������#��� ������ �

�������������������$��� (homogeneous)�����x − y

���� n �������������� n × 2 ����� A[i][j] ����

(0 1) ������� x ���� y ���

3 ������ Pascal ������� C/C++ ���������

Page 27: 程序设计竞赛训练手册 - tup.com.cn · Programming Challenges The Programming Contest Training Manual 挑 战 编 程 程序设计竞赛训练手册 Steven S. Skiena Miguel

· 10 · � 1 � ��

• �� — ����$��� (heterogeneous)��������������������������������������������������

��������������������� ����������

���������������������������������

�������� x − y �������������������� (��

�)������������struct point {

int x, y;

};

��������'�� p.x � p.y �������������������

�������#������������������#��������

���������������������������������

����������������� �������� x � y �������

�� z �����#���������������������� �

������ ����

typedef int point[DIMENSION];

double distance(point a, point b)

{

int i;

double d=0.0;

for (i=0; i<DIMENSION; i++)

d = d + (a[i]-b[i]) * (a[i]-b[i]);

return( sqrt(d) );

}

�� 2����������������������������� ������������������������������������������ �

�������������

1.5 � � � �

�������������������������� Valladolid����

����������������� ��������������������