
USACO
文章平均质量分 76
fairyroad
湖湘山野小民,北京吖吖码农,从不上课的伪愤青、伪文青兼伪极客,信而好古但离信达雅之境250光年开外,好Coding,身揣HTC G7 iPod Touch 3 ThinkPad X201i 伪潇洒,于公元2007~2008年傻不拉几创业并光荣失败,流浪京都Baidu Intern,现浑浑噩噩等待毕业中……
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
输入输出细节处理,USACO Fractions to Decimals
算法还是很简单的,基本上学过小学除法算术的都知道,因n/d为的每位运算所得的余数只可能是0..d-1,如果在某处出现一个余数之前曾经出现过(在小数位上),那么可以肯定此时从该处到上次用出现这个这个商之间存在循环节。这样,就可以用基本的标记法就可以了。所以这题其实麻烦的是输出的处理原创 2011-07-21 13:20:39 · 2642 阅读 · 0 评论 -
无聊的题,USACO control company
记录哪些公司控制哪些公司,且当每次我们得知某公司控制了某公司百分之多少的股份,就更新控股信息。/*ID: fairyroadLANG: C++TASK: concom*/ #include #include using namespace std; bool原创 2011-07-17 22:27:10 · 2822 阅读 · 0 评论 -
享受递归的潇洒 USACO zerosum
/*ID:fairyroadTASK:zerosumLANG:C++*/#include#includeusing namespace std;ifstream fin("zerosum.in");ofstream fout("zerosum.out");i原创 2011-07-16 19:58:49 · 2794 阅读 · 0 评论 -
USACO Solution Code(5):Name That number, Palindromic Squares and Dual Palindromes
都是比较简单的几道题,就不多废话了,直接上代码。#include #include #include #include usingnamespace std;ifstream fin("namenum.in");ofstream fout("namenum.out");//将字母原创 2010-08-30 11:04:00 · 847 阅读 · 0 评论 -
USACO Solution Code(2)
黑色星期五(Friday the thirteenth)的程序。这些程序其实都很简单,没有很复杂的算法在里面,追求极致的Geek们可以从代码的长度、优雅简洁等方面下功夫了,俺伪Geek一个,写了个程序能通过,就不纠结了,哈哈…/*ID: fairyroadPROG: friday原创 2010-08-23 09:35:00 · 587 阅读 · 0 评论 -
DP到底有多飘逸?看USACO money
看到数据量大到1W,我就知道单纯的DFS算法那是肯定会超时的,而且一看也基本上看得出来要用DP来处理。不过今儿有劲儿,看看DP到底能比DFS快多少。下面是超时代吗。/*ID: fairyroadTASK:moneyLANG:C++*/#includeusing nam原创 2011-07-16 20:23:59 · 2569 阅读 · 0 评论 -
水题其实也能反映思维的严谨性:USACO The Tamworth Two
简单的模拟。需要记录方向和坐标,进行模拟,直到相遇。如何判断永远不相遇呢?可以用bool数组保存已经访问过的位置信息。但是一开始我糊涂了,晕透了我,靠。一开始我都没往下细想就用了两个3维数组来存储,前面几组数据都对,唯独到了第4组数据我的程序输出为0,调试最怕的就是很多数据都对,原创 2011-07-18 12:32:22 · 2627 阅读 · 0 评论 -
USACO humble,动态规划简直快得吐血(对比类似treap思路)
第一感觉是用类似于treap的方法,不过treap我没有独立实现过,怕细节上出错,但是思想还是可以借鉴的,于是就想到用STL的set来帮忙。看下面的图就知道了。只要在树中的节点就是可以扩展的节点,所以绿色嘛,黑色表示正在扩展的节点,蓝色就是扩展出来的数字。节点中的两笔数据 val原创 2011-07-27 14:39:49 · 3482 阅读 · 0 评论 -
USACO Bessie Come Home,Dijkstra算法的好题
八卦一下,Bessie是俺大学最喜欢的老师之一,英语老师,巨可爱一人,哈哈~~这道题我的思路是BFS+贪心,算是比较典型的Dijkstra算法的应用,另外两个牧场之间可能有多条路径,所以在输入中要做好预处理。因为总共只有52个节点,用排列组合也可以算出来只有2704种可能,所以输原创 2011-07-19 18:40:44 · 3195 阅读 · 1 评论 -
USACO Contact, Stamps, 哈希,动态规划
1、contact这题估计是丢俺老脸的题,因为俺就直接枚举了。唯一的trick是对于 01, 001这样的字符串,计算hash值的时候,需要记得转换为101, 1001这样的形式,不然肯定就混淆了,所以直接上代码吧,应该好懂。/*ID:fairyroadLANG:C++TASK:contact*/#in原创 2012-05-02 17:20:59 · 6161 阅读 · 0 评论 -
USACO Stringsobits, 还是得搬出动态规划来
这题证明俺现在真是老了,退步了,这是第一份代码:#include using namespace std; ifstream fin("kimbits.in");ofstream fout("kimbits.out"); unsigned int N, L, pos; int mai原创 2012-05-03 20:37:19 · 2756 阅读 · 0 评论 -
USACO Feed Ratios, Magic Squares
本质上讲,这两道题都是数学题,ratios是行列式解线性方程组,squares是组合数学。可见ACMer数学基础好确实是非常重要的。1、Feed Ratios所求的实际上就是一个最简配比 x, y, z, w,使得 x(a1,b1,c1) + y(a2,b2,c2) + z(a3,b3,c3) = w(g1,g2,g3),我线性代数也忘得差不多了,不过对克莱姆法则还有一点印象。原创 2012-05-11 03:02:57 · 3646 阅读 · 0 评论 -
USACO Riding The Fences 与欧拉路径问题
简单的看,图的路径算法可以分两类:可达性寻问题:找到一条满足某种条件的路径,如图的连通性问题(简单路径算法),欧拉路径,汉密顿路径等等;含权图的最优化问题:如点对间的最短路径,欧几里德网;而一切和图有关的算法,几乎都是DFS和BFS,这两家伙乍一看浓眉大眼的。他们所反映的,是计算机中的逻辑性与次序性,世界纷繁复杂,DFS与BFS是探索这些杂乱无章的一种逻辑很清晰、次序性很明显的原创 2012-05-14 02:13:14 · 4384 阅读 · 0 评论 -
USACO Solution Code(1)
<br />“说走咱就走啊,你有我有全都有!”,去USACO干了两道题,当然前面的题那是简单到极点的那种,呵呵。不过俺学乖了,如今要记得留代码,以后再要忘记帐号密码就不至于从新开始这么惨淡…<br />没图什么代码的优雅性,所以下面的代码及其难看,像第一题,很多重复的语句可以提炼原创 2010-08-22 17:36:00 · 590 阅读 · 0 评论 -
USACO Solution Code(6):Mixing Milk & Barn Repair
<br />/*<br />ID: fairyroad<br />PROG: milk<br />LANG: C++<br />*/<br /> <br />#include<fstream><br />#include <vector><br />#include <algor原创 2010-08-31 11:14:00 · 943 阅读 · 0 评论 -
USACO nocows
不错的DP题。设dp[i][j]表示 i个点组成的等于k高度的满足题意的个数,这样高度要求是k的就直接引用,后面的应该不用说了吧。任何高度为Hi的树都是两个子树构成,一个必须高度为Hi-1,另外一个无所谓。但是要注意重复。注意代码注释部分。/*ID: fairyroadTAS原创 2011-07-13 23:15:18 · 2720 阅读 · 0 评论 -
USACO Prime Palindrome, SuperPrime Rib
老规矩,先扯几句淡。寻找回文质数还是蛮有趣的。可以先找回文数再判断是否是质数,也可以先找出质数在判断是否满足回文数性质,这些可以认为是搜索的思路。我们知道,但凡问题要求找出全部解的时候,一般都意味着两种思路,即搜索和构造。而通常情况下,搜索耗时会大很多,甚至空间耗费也要大不少,但原创 2011-05-20 00:26:00 · 1319 阅读 · 3 评论 -
USACO prefix
/*ID: fairyroadTASK:prefixLANG:C++*/#include#include#include#includeusing namespace std;ifstream fin("prefix.in");ofstream fout("原创 2011-07-13 23:10:36 · 2544 阅读 · 0 评论 -
USACO subset
开始的时候写的一个超时了的代码,用广搜,搜索确实厉害,但是在DP面前瞬间就萎了,唉.../*ID: fairyroadTASK:subsetLANG:C++*/// 超时代码,思路是BFS#include#ifdef debug#include#endif#原创 2011-07-13 23:01:23 · 2815 阅读 · 0 评论 -
USACO Preface
前面好几天,俺要发文章CSDN都跟我作对,点击发表一点反应都没有,俺怒了,实在不想继续搞下去,尤其,那时候傻逼的俺也没有发现CSDN直接粘贴Word文件的地儿,郁闷了。下面几个USACO程序都直接贴代码了。/*ID: fairyroadTASK: prefaceLANG: C++原创 2011-07-13 22:55:58 · 2202 阅读 · 0 评论 -
USACO:frac1
基本思路是受到了M路归并的启发。从这里也看得出来基础的重要性。 /*ID: fairyroadTASK: frac1LANG:C++*/#include#includeusing namespace std;ifstream fin("frac1.in");o原创 2011-07-08 17:37:04 · 760 阅读 · 0 评论 -
UASCO checker, 不要满足惯性思维
<br />Frankly speaking,第一眼看这个题真没劲,古董题,N皇后。不过,第一次提交代码之后我明白了,是我自己太没专研精神了。N皇后是回溯或者说深度优先搜索的典范,我就是初学回溯和DFS时接触到N皇后的,所以我飞敲键盘写出了下面的代码(这个不是直接提交的代码,是后原创 2011-05-21 22:34:00 · 2399 阅读 · 2 评论 -
USACO holstein, hamming
微博: http://t.sina.com.cn/g7tianyi豆瓣:http://www.douban.com/people/Jackierasy/广度优先搜索的好题,广搜的好处之一就是往往可以直接找到最短路径,而且,就本题而言,还可以大规模剪枝。优化的话估计还可以用位运算,原创 2011-07-10 15:25:38 · 765 阅读 · 0 评论 -
USACO Score Inflation,完全背包问题
自从dd_engine老大《背包问题九讲》横空出世,背包问题的精髓基本已道尽。严重推荐。反正我是又老老实实读了一遍dd老大的文章的,大牛如此,榜样在先呀。/*ID: fairyroadTASK: inflateLANG: C++*/#includeusing name原创 2011-07-24 13:52:58 · 2549 阅读 · 0 评论 -
USACO runround
/*ID: fairyroadTASK: runroundLANG: C++*/#include#include#includeusing namespace std;ifstream fin("runround.in");ofstream fout("run原创 2011-07-13 23:08:14 · 2371 阅读 · 0 评论 -
USACO sort3
水题。/*ID: fairyroadTASK:sort3LANG:C++*/#includeusing namespace std;ifstream fin("sort3.in");ofstream fout("sort3.out");#define MAX原创 2011-07-09 16:41:11 · 654 阅读 · 0 评论 -
USACO Agri-Net,最小生成树
复习。想想要是大二刚开始搞CS那会就一边做USACO多好呀,知识和技能想必一定会扎实很多。需要找出所给图的最小生成树。我们使用这样的算法:在每一步,将不在树中的长度最小的边加入树中。典型的Prim算法,Prim算法的本质思想是贪心,贪心从来都是很快的,而且简单好理解。/*ID:原创 2011-07-24 13:47:43 · 2752 阅读 · 0 评论 -
USACO Sweet Butter 与图的寻径算法
此题的实际模型如下:给定一个有P个顶点的无向含权图,选择一个顶点,使得从该点到给定的N个顶点的权值之和最小。最经典的就是Dijkstra算法了。这个经典的不能再经典的贪心策略,应该都知道的吧。每次都需要在Distance数组中寻求一个最小值,如果图很大,则在此处花费的时间会很多,而堆则可以在O(1)的时间内求得最小值,并且维护一个堆所需的时间都是在log级的。因此考虑把Distance数组的值原创 2012-05-13 18:35:49 · 3136 阅读 · 0 评论