c语言特殊的质数肋骨,USACO 教程.pdf

USACO 教程

USACO 教程

USACO 教程

目录

Section 1.2 Complete Search 枚举搜索2

Section 1.3 Greedy Algorithm 贪心算法4

Section 1.3 Winning Solutions 竞赛中的策略6

Section 1.4 More Search Techniques 更多的搜索方式9

Section 1.5 Binary Numbers 二进制算法 13

Section 2.1 Graph Theory 图论知识 15

Section 2.1 Flood Fill 种子染色法22

Section 2.2 Data Structures 数据结构26

Section 2.2 Dynamic Programming 动态规划33

Section 2.4 Shortest Paths 最短路径40

Section 3.1 Minimal Spanning Trees 最小生成树(MST) 45

Section 3.2 Knapsack Problems 背包问题47

Section 3.3 Eulerian Tour 欧拉通路50

Section 3.4 Computational Geometry 计算几何59

Section 4.1 Optimization 最优化64

Section 4.2 Network Flow 网络流67

Section 4.3 Big Number 高精度72

Section 5.1 Two Dimensional Convex Hull 二维凸包77

Section 5.3 Heuristic Search 启发式搜索84

·1 ·

USACO 教程

Section 1.2 Complete Search 枚举搜索

思想:

写枚举搜索时应遵循KISS 原则(Keep it simple stupid ,译为“写最单纯愚蠢的程序”,意思是应把程序写得尽

量简洁),竞赛时写程序的最终目标就是在限制时间内求出解,而不需太在意否还有更快的算法。

枚举搜索具有强大的力量,他用直接面向答案并尝试所有方案的方法发现答案。这种算法几乎总是解题时你

第一个想到的方法。如果它能在规定的时间与空间限制内找出解,那么它常常很容易编写与调试。这就意味着你

可以有时间去解答其他难题,即那些不能显示枚举算法强大的题目。

如果你面对一道可能状态小于两百万的题目,那么你可以考虑使用枚举搜索。尝试所有的状态,看看它们是

否可行。

小心!小心!

有时,题目不会直接要求你使用枚举算法。

例题1:派对灯 [IOI 98]

在一次IOI 派对上有N 个灯和4 个灯开光,第一个开关可以使所有灯改变状态(关上开着的灯,开启关着

的灯),第二个开关可以改变所有偶数位上灯的状态,第三个开关可以改变所有奇数位上灯的状态,第四个开关

控制着灯 1、4、7、10…… (3n+1 )。

告诉你N 的值和所有按开关的次数(小于10,000 次)。并告诉你某些灯的状态(例如:7 号灯是关着的,10 号

灯是开着的)请编程输出所有灯可能的最后状态。

很明显,每次按开关你都要偿试4 种可能。那么总共要试 4 10000 次(大约 106020),那意味着你没有足

够的时间去使用枚举搜索,但是我们将枚举方法改进一下,那就可以使用枚举了。因为无论有多少个灯,由于开

关控制的特殊性,都会出现6 个灯一次循环的情况,即1 号灯的状态永远与7 号灯,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值