- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
uscal部分题目总结2
USACO Fall03题目总结
在Noi2005之前,我和Fu Dong集体训练USACO竞赛的题目,分别写了一些题目的解题分析。发表在这里供大家参考。
Fall03 Orange -- Cow Laundry 题意:n条线段,有些线段可能会相交,一次可以交换上端点或下端点相邻的两条线段,求至少要经过多少次交换才能使所有的线段都互不相交。就是求n个数的一个排列的逆序对数,方法很多,用归并排序,线段树,虚二叉树都可以做,我用的是虚二叉树,因为它的空间复杂度和时间复杂度都是最优的。注:这个题的输入中每行的两个数不是表示一条线的上下两个端点的编号,而是表示上边第i个端点和下边第i个端点连的线的编号。)
Fall03 Orange -- Romeo Meets Juliet 题意:P个点连成一条线段,有N只奶牛占有这条线段上一个单位的线段,求这条线段上最长的一条子线段,使得这条子线段上的奶牛不超过C只。把每个单位线段上有多少头牛计算出来后,从头到尾扫描一下每个单位线段,并记录最长的长度就可以了。
Fall03 Orange -- ISBN 题意:ISBN码是一个10位的能被11整除的数,给出一个ISBN码,其中有一位上的数字不知道是多少,求那个数字。一个数被11除的余数与这个数奇数位上的数字和与偶数位上的数字和的差的绝对值被11除的余数相等,所以如果有解,那么一定是唯一的。求缺的那个数字直接计算就可以了。 Fall03 Green -- Cow Exhibition 题意:N头奶牛,每头牛有两个属性值S和F,现在要从中选出若干头牛,要求这些牛的S属性值的和非负,F属性值的和也非负,并且要求S属性值和加上F属性值和的结果最大。这道题可以用动态规划来做,状态f[i,j]表示前i头牛中选出一些牛,它们的S属性值的和为j时,F属性值的和最大为多少。用搜索来解决这道题的效率要比动态规划高很多。首先把s≥0和f≥0的牛保存下来,因为这样的牛是一定要选的;把s<0和f<0的牛去掉,因为这样的牛是一定不能选的。然后按照s+f的和从大到小对奶牛排序,因为按照这个顺序来搜索,剪枝的效果会比较好。对于第i只奶牛,有选和不选两种选择,在搜索的过程中要加上两个剪枝,最优化剪枝:如果当前搜到的s+f的值加上后面最多能达到的s+f的值小于已经搜得的最大值,就退出;可行性剪枝:如果当前搜到的s(或f)值<0,那么如果s(或f)加上后面最多能得到的s(或f)值<0,就退出。确定了合适的搜索顺序,再加上两个剪枝后,搜索的效率就大大提高了。 Fall03 Green -- Beauty Contest 题意:平面上有N个点,求距离最远的两个点。可以证明,最远的两个点一定在凸包上,所以先用NlogN的方法求凸包,然后在凸包上找距离最远的两个点就可以了。 Fall03 Green -- Popular Cows 题目简述:n头奶牛,给出若干个欢迎关系a b,表示a欢迎b,欢迎关系是单向的,但是是可以传递的。另外每个奶牛都是欢迎他自己的。求出被所有的奶牛欢迎的奶牛的数目。模型转换:N个顶点的有向图,有M条边(N≤10000,M≤50000)。求一共有多少个点,满足这样的条件:所有其它的点都可以到达这个点。首先,这个题的N和M都非常大,硬做是肯定不行的。考虑如果这个图是一棵树,那么问题就变的很简单了,因为至多有一个点满足条件,这个点满足条件的充要条件是:这个点是树中唯一的出度为0的点。那么我们能否把图转化为树呢?首先可以想到的是,如果图中包含有环,那么就可以把这个环缩成一个点,因为环中的任意两个点可以到达,环中所有的点具有相同的性质,即它们分别能到达的点集都是相同的,能够到达它们的点集也是相同的。那么是否只有环中的点才具有相同的性质呢?进一步的考虑,图中的每一个极大强连通分支中的点都具有相同的性质。所以,如果把图中的所有极大强连通分支求出后,就可以把图收缩成一棵树,问题就迎刃而解了。 预备知识:无向图的强连通分量的求法,这个和求割点的算法差不多。算法框架:对无向图求强连通分量,然后找出所有独立的强连通分量(所谓独立,就是该连通分量里面的点到外面的点没有通路,当然,连通分量外的点是可以有路到强连通分量内的点的),如果独立的强连通分量的数目只有一个,那么,就输出这个强连通分量内解的个数,否则输出无解。算法证明:1:假设a和b都是最受欢迎的cow,那么,a欢迎b,而且b欢迎a,于是,a和b是属于同一个连通分量内的点,所有,问题的解集构成一个强连通分量。2:如果某个强连通分量内的点a到强连通分量外的点b有通路,因为b和a不是同一个强连通分量内的点,所以b到a一定没有通路,那么a不被b欢迎,于是a所在的连通分量一定不是解集
原创力文档


文档评论(0)