ImageVerifierCode 换一换
格式:DOCX , 页数:85 ,大小:49.96KB ,
资源ID:9917098      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9917098.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(USACO讲义合集.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

USACO讲义合集.docx

1、USACO讲义合集2009 年暑假集训讲义2009 年暑假集训讲义上海交通大学 马融上海交通大学 马融第一讲 穷举与贪心 . 3 集市班车 (Fair Shuttle, USACO 2009 Feb) . 4 翻转棋 (Fliptile, USACO 2007 Nov) . 5 翻转奶牛 (Face The Right Way, USACO 2007 Mar) . 6 第二讲 背包问题 . 7 分数膨胀 (Score Inflation, USACO 3.1) . 8 货币系统 (Money Systems, USACO 2.3) . 9 奶牛博览会 (Cow Exhibition, USAC

2、O 2003 Nov) . 10 太空电梯 (Space Elevator, USACO 2005 Mar) . 11 牛奶量取 (Milk Measuring, USACO 5.3) . 12 第三讲 动态规划选讲 . 13 抓苹果 (Apple Catching, USACO 2004 Nov) . 15 最廉回文 (Cheapest Palindrome, USACO 2007 Open) . 17 麦香牛块 (Beef McNuggets, USACO 4.1) . 19 道路重建 (Rebuilding Roads, USACO Feb 2002). 20 第四讲 最小生成树问题 .

3、 22 建造道路 (Building Roads, USACO 2007 Dec) . 23 安慰奶牛 (Cheering up the Cows, USACO 2008 Nov) . 24 地震 (Earthquake, USACO 2001 Open) . 26 第五讲 最短路径问题 . 28 道路翻新 (Revamping Trails, USACO 2009 Feb) . 29 道路障碍 (Roadblocks, USACO 2006 Nov) . 31 奶牛慢跑 (Cow Jogging, USACO 2008 Mar) . 33 第六讲 广度优先遍历 . 35 青铜莲花池 (Bro

4、nze Lilypad Pond, USACO 2007 Feb) . 36 白银莲花池 (Silver Lilypad Pond, USACO 2007 Feb) . 37 黄金莲花池 (Lilypad Pond, USACO 2007 Feb) . 39 第七讲 USACO 竞赛试题选讲 . 41 哞哞大学之奖学金 (Moo University - Financial Aid, USACO 2004 Mar) . 42 哞哞大学之校队选拔 (Moo University - Team Tryouts, USACO 2004 Mar) . 44 哞哞大学之匹萨预定 (Moo Univers

5、ity - Emergency Pizza Order, USACO 2004 Mar) . 46 第八讲 USACO 竞赛试题选讲(续) . 48 黄金平衡 (USACO 2007 Mar) . 49 奶牛排名 (Ranking the Cows, USACO 2007 Mar) . 50 奶牛交通 (Cow Traffic, USACO 2007 Mar). 51 校庆聚会 (Ural 1039). 52 第九讲 线段树 . 54 2009 年暑假集训讲义USACO 题目中常见的单词:pasture 牧场barn 牛棚trail 小路grazing location 放牧地点interse

6、ction 十字路口FJ 农夫约翰(Farmer John)的缩写Bessie 贝西,一头非常聪明的母牛hay 干草hoof 牛蹄(复数 hooves)上海交通大学 马融2009 年暑假集训讲义第一讲 穷举与贪心上海交通大学 马融2009 年暑假集训讲义集市班车 (Fair Shuttle, USACO 2009 Feb) 上海交通大学 马融逛逛集市,兑兑奖品,看看节目对农夫约翰来说不算什么,可是他的奶牛们非常缺乏锻炼如果要逛完一整天的集市,他们一定会筋疲力尽的。所以为了让奶牛们也能愉快地逛集市,约翰准备让奶牛们在集市上以车代步。但 是, 约翰 木有 钱, 他租来 的班 车只 能在 集市上 沿

7、 直线 跑一 次, 而且 只能停 靠N (1 N 20000)个地点(所有地点都以1到N之间的一个数字来表示)。现在奶牛们分成K (1 K 50000)个小组,第 i 组有Mi (1 Mi N)头奶牛,他们希望从Si跑到Ti (1 SiTi N)。由于班车容量有限,可能载不下所有想乘车的奶牛们,此时也允许小组里的一部分奶牛分开乘坐班车。约翰经过调查得知班车的容量是C (1 C 100),请你帮助约翰计划一个尽可能满足更多奶牛愿望的方案。输入格式 第一行:包括三个整数:K,N和C,彼此用空格隔开。 第二行到K + 1行:在第i + 1行,将会告诉你第i组奶牛的信息:Si,Ei和Mi,彼此用空格隔

8、开。输出格式 第一行:可以坐班车的奶牛的最大头数样例shuttle.in 8 15 3 1 5 2 13 14 1 5 8 3 8 14 2 14 15 1 9 12 1 12 15 2 4 6 1 解题思路shuttle.out 10 (班车可以把2头奶牛从1送到5,3头奶牛从5送到8,2头奶牛从8送到14,1头奶牛从9送到12,1头奶牛从13送到14,1头奶牛从14送到15)贪心,在任何时刻总是带最早下车的奶牛,证明略。2009 年暑假集训讲义翻转棋 (Fliptile, USACO 2007 Nov) 上海交通大学 马融农夫约翰知道,聪明的奶牛可以产更多的牛奶。他为奶牛设计了一种智力游戏

9、,名叫翻转棋。翻转棋可以分成M N (1 M, N 15)个格子,每个格子有两种颜色,一面是黑的,一面是白的。一旦翻转某个格子,这个格子的颜色就会颠倒。如果把所有的格子都翻成白的,就算奶牛赢了。然而,奶牛的蹄子很大,一旦它们打算翻转某个格子,这个格子附近(即和这个格子有公共边)的格子也会被翻转。一直翻来翻去也很无聊,奶牛们想最小化必须翻动的次数。请帮助奶牛确定翻动的最少次数和具体的翻法。如果最小解有多个,则输出在字典序意义下最小的那个,如果不可能完成任务,则只要输出一行单词:IMPOSSOBLE。输入格式 第一行:两个用空格分开的整数:M和N 第二行到M + 1行:第i + 1行从左至右依次描

10、述了棋盘第i行的的颜色,共记N个用空格分开的整数,1 代表黑色,0 代表白色。输出格式 第一行到第M行:每行输出N个用空格分开的整数,表示在这个格子上翻转的次数。样例fliptile.in 4 4 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 解题思路fliptile.out 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 (另外还有一个解是0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 但是这个解在字典序意义下没有样例来得小)如果第一行的翻法固定了,其余行的翻法是固定的,所以只要穷举第一行的翻法就可以了。2009 年暑假集训讲义上海交通大学

11、马融翻转奶牛 (Face The Right Way, USACO 2007 Mar) 农夫约翰把N (1 N 5000)头奶牛排成了一行,其中大部分的奶牛都很好,他们的脸都朝向正面,但就有一小撮的奶牛是朝向背面的,为了追求完美,约翰决定要让所有的牛都朝向正面。幸运的是,约翰最近刚买了一部自动翻牛机。不过因为他买的是打折机型,所以事先必须要设定单次翻转的牛头数K (1 K N),一旦固定,就再也不能修改了。而且这台机器只能同时翻转站在一起的奶牛,每次使用的时候,它会翻转相邻的K头奶牛(不能少于K头,就算靠在队列的两个端点上也一样),一头牛在被翻转之前是朝向正面的,使用之后就会被翻到背面去了,反

12、之亦然。由于约翰只能选一个不可以修改的K,所以请帮他确定一个K,使得使用机器的次数最少,同时,也请把这个最少的次数M求出来(如果有多个K满足条件,输出最小的那个)。输入格式 第一行:单个整数:N 第二行到第N + 1行:第i + 1行只有一个字符 B 或 F,表示第i头奶牛是朝向正面(F)还是背面的(B)。输出格式 第一行:两个用空格分开的整数:K和M样例cowturn.in 7 B B F B F B B 解题思路cowturn.out 3 3 (选择K = 3,翻转三次:(1,2,3),(3,4,5),(5,6,7)即可)枚举K,从头扫描需要翻转的点,每个点的状态只和它前K 1个点翻转次数

13、的奇偶性有关,所以可以在线性时间内求出对应的M,总的时间复杂度为O(n2)。2009 年暑假集训讲义第二讲 背包问题参考资料: 基本理论上海交通大学 马融问题子问题给定n个物品的价值vi和重量wi,在总重量不超过(恰好为)C的情况下,求最优的背包方案fi, j:只使用前i个物品,在总重量不超过(恰好为)j的情况下,可以达到的最优的背包方案边界条件递推公式目标函数“不超过”“恰好为”f 0,0 = f 0,1 = = f 0, C = 0f 0,0 = 0, f 0,1 = = f 0, C = f i, j = max f i 1, j , f i 1, j wi+ vifn, C 背包问题的

14、变化 01 物品:每个物品只能选择“取”(0)或“不取”(1) 无限物品:每个物品可以取任意多个或一个也不取 多重物品:每个物品可以取的次数有一个对应的上界 多费用物品:每个物品占用的资源有多个 分组物品:每个物品都在一个组里,同一个组里的物品只能选择一个(或若干多个) 附件物品:附件物品必须在主件物品被选择后才能选取 输出最优方案 输出第 k 优的解(vijos1412)下面两个程序都是正确的(01 背包 vs 无限背包)fillchar(f, sizeof(f), 0); for i := 1 to n do for j := m downto vi do fj := max(fj, fj

15、-vi + wi); writeln(fm);fillchar(f, sizeof(f), 0); for i := 1 to n do for j := vi to m do fj := max(fj, fj-vi + wi); writeln(fm); 2009 年暑假集训讲义分数膨胀 (Score Inflation, USACO 3.1) 上海交通大学 马融选手在 USACO 竞赛中得分越高我们就越高兴。我们要让选手在竞赛中能够得到更多的分数,这需要你的帮忙。竞赛题目可以按题型来分类,每个题型中的题目是无限多的。解决同一类问题的时间和得分都是一样的。你的任务是写一个程序来告诉 USAC

16、O 的工作人员,应该从每种题型中选取多少题目,才能让选手在规定的时间内获得最多的分数?输入包括竞赛总时间M (1 M 10000)(不要担心,你如果不来集训营是不会有这么长的比赛时间的)和题型的总数N (1 N 10000)。接下来的每一行将包括两个整数来描述一种题型:第一个整数表示这类题目的得分(1 得分 10000),第二个整数表示这类题目的耗时(1 耗时 10000)。你的程序要帮助我们确定从每类题目中选多少才能在竞赛时间内获得最大的总分。注意每种题型的题目可以不取、只取一道或很多道,请算出选手能够得到的最大分数。输入格式 第一行:两个正整数:M和N,表示竞赛的总时间和题目类型的数目 第

17、二行到第N + 1行:每行两个整数,分别表示每个题型的得分和耗时输出格式 第一行:能够得到的最大分数样例inflate.in 300 4 100 60 250 120 120 100 35 20 解题思路典型的无限背包。inflate.out 605 (从第二种类型中取出 4 道,再从第四种类型中取出 3 道)原问题子问题边界条件递推公式目标函数给定N种题目的时间mti和分数pti,在总时间不超过M下的最大分数fi, j:只使用前i种类型的题目,在总时间不超过j下的最大分数f 0,0 = f 0,1 = = f 0, M = 0f i, j = max f i 1, j , f i, j mt

18、i+ ptifN, M 2009 年暑假集训讲义货币系统 (Money Systems, USACO 2.3) 上海交通大学 马融奶牛们不但创建了自己的政府,而且建立了自己的货币系统。这套货币是以反常的方式建立起来的,所以货币的面值相当奇快习惯上,一套货币的面值应该是由 1,5,10,20 或 25,50 和 100 作为的单位组成才对,当然有时也会把 2 加入进来作为调剂。奶牛想知道用一套货币表示一笔钱可以有多少种不同的方法。比如说,对于1,2,5,10, 这套货币系统,可以用来表示18元的方法有18 1,9 2,8 2 + 2 1,3 5 + 2 + 1,等等。给定一套货币的面值,写一个程

19、序来计算有多少方法来表示某笔钱。我们保证答案不会超过带符号的 long long 类型(C/C+)或 Int64 类型(Free Pascal)。输入格式货币有V (1 V 25)种,需要构造的钱的数目是N (1 N 10000) 第一行:两个正整数:V, N 第二行至其余各行:V个表示货币单位面值的整数(每行出现的整数个数是不定的)输出格式 第一行:用V种货币表示N元钱的方法总数样例money.in 3 10 1 2 5 解题思路money.out 10 原问题子问题边界条件递推公式目标函数给定V种面值的钱币c1, c2, , cV,求有多少种方案可以恰好表示N元fi, j:只使用前i种钱币

20、,恰好可以表示出j元的方案总数f 0,0 = 1, f 0,1 = = f 0, N = 0f i, j = f i 1, j + f i, j cifV, N 2009 年暑假集训讲义上海交通大学 马融奶牛博览会 (Cow Exhibition, USACO 2003 Nov) 奶牛们想向社会证明其实他们是聪明而且风趣的。为此,贝西筹备了一个专门展览奶牛的博览会,她已经对 N (1 N 100)头奶牛进行了面试,确定了每头奶牛的聪明指数Si (1000 Si 1000)和风趣指数Fi (1000 Fi 1000)。贝西需要决定让哪些奶牛上博览会。设总聪明指数TS为各奶牛聪明指数Si的和,总风趣指数TF为各奶牛风趣指数Fi的和。贝西想使TS与TF的和最大,同时她希望这两个值不要小于零(

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1