
USACO
BottomCodest
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Chap1 Milking Cows
用模拟的方法,将农夫进入和离开的时间存放一个数组后排序。然后扫描数组,如果是进入,则在农场的农夫数加1,否则农夫数减1。这样最长的没挤奶时间为农夫数为0的最长时间,其他时间间隔为挤奶时间。一个小细节要注意的是,当一个农夫在某一时间离开,且另一农夫在这同一时间进入的时候,要把进入事件排到离开事件的前面,不然的话就会在这一点形成农夫数为0的时刻,从而出现错误。原创 2008-08-26 20:09:00 · 408 阅读 · 0 评论 -
Milking Cows
这本是一道很简单的题,我却做了很长时间,究其原因,我想主要是不熟练,不自信。主要思路就是按到达时间排序,将相邻的时间全并,复杂度主要是排序,是O(nlogn).提交后,看分析,有一个算法很巧妙,把每一个农夫的到达和离开看作一个事件。然后对事件进行排序。有一个农夫则农夫数加一,有一个农夫离开则农夫数减一。原创 2008-06-12 20:58:00 · 509 阅读 · 0 评论 -
USACO: chap3 Sweet Butter
这是一道最短路径的题,开始图简便用floyd算法,结果超时。后来用Dijkstra算法,还是超时,因为求新加入的结点时我用的是线性算法,复杂度还是O(n^3).注意到这个图是一个稀疏图,因此用一个heap来实现求最近点,这样复杂度为O(n^2logn)。注:priority_heap是一个大顶堆另外知道了gdb的display命令。每到断点的时候自动显示变量的值,原来我一直n,p variable原创 2008-09-02 14:18:00 · 457 阅读 · 0 评论 -
USACO: Chap3 Riding the Fences
这道题是关于Eulerian回路/路径的,虽然算法比较简单,但我并没弄清原理。。。照抄text上的算法。但仍然提交了n次,归其原因,还是因为老毛病,对题意没理解透彻就急着写程序。效率问题:开始是建图的时候进行插入排序,后来改成直接插入,最后再排序,效率提高很多。原创 2008-09-04 21:00:00 · 516 阅读 · 0 评论 -
USACO:Name That Number
第一思路是backtracing,然后二分查找字典。结果第10个例子超时。然后就没办法了。只能上网搜搜。。汗。看到一个反向转换的思路,然后顿时觉得自己太笨了,没想到这样做。字典才50,000条,backtracing的话是3^12个。赶紧写了个提交,才过。官方的答案是这两种思路都有。不过貌似用C++原创 2008-06-13 09:21:00 · 356 阅读 · 0 评论 -
USCAO Chap4 Fence Loops
很久没有做usaco了。这道题其实挺简单,可是我想了一天多。。。思路还是太死板了。这道题的关键是把输入转换成图,然后求最小路径。输入转换图我是这样做的,主要思路是给每一条边的两个顶点编号,如果该点已经存在,则赋值,否则编号数加1。要实现这个,我是从第一条边到最最后一条边依次处理的。对于每一条边,若这条边与编号小的边相连,则可以肯定,这个顶点已经编过号了,所以只需找出这个编号就可以了。否则,这个点是原创 2008-10-06 20:14:00 · 817 阅读 · 0 评论