自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

左手为你画情

关注海量数据处理,关注智能终端开发。技术迷,艺术迷;伪文青、伪愤青兼绵羊男风格极客一枚。时刻准备着与三两好友,美酒斗升,牛肉十斤~

  • 博客(50)
  • 收藏
  • 关注

原创 USACO Riding The Fences 与欧拉路径问题

简单的看,图的路径算法可以分两类:可达性寻问题:找到一条满足某种条件的路径,如图的连通性问题(简单路径算法),欧拉路径,汉密顿路径等等;含权图的最优化问题:如点对间的最短路径,欧几里德网;而一切和图有关的算法,几乎都是DFS和BFS,这两家伙乍一看浓眉大眼的。他们所反映的,是计算机中的逻辑性与次序性,世界纷繁复杂,DFS与BFS是探索这些杂乱无章的一种逻辑很清晰、次序性很明显的

2012-05-14 02:13:14 4336

原创 USACO Sweet Butter 与图的寻径算法

此题的实际模型如下:给定一个有P个顶点的无向含权图,选择一个顶点,使得从该点到给定的N个顶点的权值之和最小。最经典的就是Dijkstra算法了。这个经典的不能再经典的贪心策略,应该都知道的吧。每次都需要在Distance数组中寻求一个最小值,如果图很大,则在此处花费的时间会很多,而堆则可以在O(1)的时间内求得最小值,并且维护一个堆所需的时间都是在log级的。因此考虑把Distance数组的值

2012-05-13 18:35:49 3092

原创 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 3598

原创 USACO fact4, spin

1、fact4这个问题在《编程之美》上有过一个类似的问题,大概是求阶乘n! 后面有多少个0,最后可以转换为求[1,N]之间因子5有多少次。这个问题和fact4有点渊源,对于n! 的尾数,看看规律就知道了:1!  = 12!  = 23!  = 64!  = 245!  = 1206!  = 7207!  = 5,0408!  = 40,3209!

2012-05-04 00:05:07 2574

原创 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 2716

原创 USACO Contact, Stamps, 哈希,动态规划

1、contact这题估计是丢俺老脸的题,因为俺就直接枚举了。唯一的trick是对于 01, 001这样的字符串,计算hash值的时候,需要记得转换为101, 1001这样的形式,不然肯定就混淆了,所以直接上代码吧,应该好懂。/*ID:fairyroadLANG:C++TASK:contact*/#in

2012-05-02 17:20:59 5433

原创 USACO humble,动态规划简直快得吐血(对比类似treap思路)

第一感觉是用类似于treap的方法,不过treap我没有独立实现过,怕细节上出错,但是思想还是可以借鉴的,于是就想到用STL的set来帮忙。看下面的图就知道了。只要在树中的节点就是可以扩展的节点,所以绿色嘛,黑色表示正在扩展的节点,蓝色就是扩展出来的数字。节点中的两笔数据 val

2011-07-27 14:39:49 3443

原创 USACO Score Inflation,完全背包问题

自从dd_engine老大《背包问题九讲》横空出世,背包问题的精髓基本已道尽。严重推荐。反正我是又老老实实读了一遍dd老大的文章的,大牛如此,榜样在先呀。/*ID: fairyroadTASK: inflateLANG: C++*/#includeusing name

2011-07-24 13:52:58 2521

原创 USACO Agri-Net,最小生成树

复习。想想要是大二刚开始搞CS那会就一边做USACO多好呀,知识和技能想必一定会扎实很多。需要找出所给图的最小生成树。我们使用这样的算法:在每一步,将不在树中的长度最小的边加入树中。典型的Prim算法,Prim算法的本质思想是贪心,贪心从来都是很快的,而且简单好理解。/*ID:

2011-07-24 13:47:43 2724

原创 输入输出细节处理,USACO Fractions to Decimals

算法还是很简单的,基本上学过小学除法算术的都知道,因n/d为的每位运算所得的余数只可能是0..d-1,如果在某处出现一个余数之前曾经出现过(在小数位上),那么可以肯定此时从该处到上次用出现这个这个商之间存在循环节。这样,就可以用基本的标记法就可以了。所以这题其实麻烦的是输出的处理

2011-07-21 13:20:39 2617

原创 USACO Bessie Come Home,Dijkstra算法的好题

八卦一下,Bessie是俺大学最喜欢的老师之一,英语老师,巨可爱一人,哈哈~~这道题我的思路是BFS+贪心,算是比较典型的Dijkstra算法的应用,另外两个牧场之间可能有多条路径,所以在输入中要做好预处理。因为总共只有52个节点,用排列组合也可以算出来只有2704种可能,所以输

2011-07-19 18:40:44 3149 1

原创 水题其实也能反映思维的严谨性:USACO The Tamworth Two

简单的模拟。需要记录方向和坐标,进行模拟,直到相遇。如何判断永远不相遇呢?可以用bool数组保存已经访问过的位置信息。但是一开始我糊涂了,晕透了我,靠。一开始我都没往下细想就用了两个3维数组来存储,前面几组数据都对,唯独到了第4组数据我的程序输出为0,调试最怕的就是很多数据都对,

2011-07-18 12:32:22 2596

原创 无聊的题,USACO control company

记录哪些公司控制哪些公司,且当每次我们得知某公司控制了某公司百分之多少的股份,就更新控股信息。/*ID: fairyroadLANG: C++TASK: concom*/ #include #include using namespace std; bool

2011-07-17 22:27:10 2775

原创 DP到底有多飘逸?看USACO money

看到数据量大到1W,我就知道单纯的DFS算法那是肯定会超时的,而且一看也基本上看得出来要用DP来处理。不过今儿有劲儿,看看DP到底能比DFS快多少。下面是超时代吗。/*ID: fairyroadTASK:moneyLANG:C++*/#includeusing nam

2011-07-16 20:23:59 2534

原创 享受递归的潇洒 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 2767

原创 USACO nocows

不错的DP题。设dp[i][j]表示 i个点组成的等于k高度的满足题意的个数,这样高度要求是k的就直接引用,后面的应该不用说了吧。任何高度为Hi的树都是两个子树构成,一个必须高度为Hi-1,另外一个无所谓。但是要注意重复。注意代码注释部分。/*ID: fairyroadTAS

2011-07-13 23:15:18 2691

原创 USACO prefix

/*ID: fairyroadTASK:prefixLANG:C++*/#include#include#include#includeusing namespace std;ifstream fin("prefix.in");ofstream fout("

2011-07-13 23:10:36 2507

原创 USACO runround

/*ID: fairyroadTASK: runroundLANG: C++*/#include#include#includeusing namespace std;ifstream fin("runround.in");ofstream fout("run

2011-07-13 23:08:14 2340

原创 USACO subset

开始的时候写的一个超时了的代码,用广搜,搜索确实厉害,但是在DP面前瞬间就萎了,唉.../*ID: fairyroadTASK:subsetLANG:C++*/// 超时代码,思路是BFS#include#ifdef debug#include#endif#

2011-07-13 23:01:23 2786

原创 USACO Preface

前面好几天,俺要发文章CSDN都跟我作对,点击发表一点反应都没有,俺怒了,实在不想继续搞下去,尤其,那时候傻逼的俺也没有发现CSDN直接粘贴Word文件的地儿,郁闷了。下面几个USACO程序都直接贴代码了。/*ID: fairyroadTASK: prefaceLANG: C++

2011-07-13 22:55:58 2171

原创 USACO holstein, hamming

微博: http://t.sina.com.cn/g7tianyi豆瓣:http://www.douban.com/people/Jackierasy/广度优先搜索的好题,广搜的好处之一就是往往可以直接找到最短路径,而且,就本题而言,还可以大规模剪枝。优化的话估计还可以用位运算,

2011-07-10 15:25:38 739

原创 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 625

原创 USACO:frac1

基本思路是受到了M路归并的启发。从这里也看得出来基础的重要性。 /*ID: fairyroadTASK: frac1LANG:C++*/#include#includeusing namespace std;ifstream fin("frac1.in");o

2011-07-08 17:37:04 716

原创 大部头不是谁都可以来的,Learning python

Mark Lutz叔叔自己估计是个牛人,至少符合计算机教学者的要求。严谨、细腻、重视练习。。。      但是M.L叔叔文字写书那实在是不行。先说标题。常规来说,大部头要干的无在乎两件事:      1、您要写的是手册,是类似于man page一类的东西,或者Receipes一类的东东,不过手册或是man page小弟直接去Python的reference page不就得了?所以您还要整理好,一定

2011-06-27 23:08:00 770

原创 UASCO checker, 不要满足惯性思维

<br />Frankly speaking,第一眼看这个题真没劲,古董题,N皇后。不过,第一次提交代码之后我明白了,是我自己太没专研精神了。N皇后是回溯或者说深度优先搜索的典范,我就是初学回溯和DFS时接触到N皇后的,所以我飞敲键盘写出了下面的代码(这个不是直接提交的代码,是后

2011-05-21 22:34:00 1864 2

原创 USACO Prime Palindrome, SuperPrime Rib

老规矩,先扯几句淡。寻找回文质数还是蛮有趣的。可以先找回文数再判断是否是质数,也可以先找出质数在判断是否满足回文数性质,这些可以认为是搜索的思路。我们知道,但凡问题要求找出全部解的时候,一般都意味着两种思路,即搜索和构造。而通常情况下,搜索耗时会大很多,甚至空间耗费也要大不少,但

2011-05-20 00:26:00 1293 3

原创 USACO Mother's Milk, Number Triangles

Mother's milk不错,蛮好的搜索题,宽搜、深搜都可以,我用的是宽搜+Hash,很快,十组数据都是0s AC。代码应该好懂,不罗嗦。实际上我也没时间多说~呜呜呜~~/*ID: fairyroadPROG: milk3LANG: C++*/#include#include#include//#includeusingnamespace std;struct state {       int tag[3];       state(){}       state(const state& other)

2011-05-18 22:21:00 991

原创 USACO The clocks, ariprog

先八卦几句。我们常说算法设计的目的是为了达到获得最优时空开销,嗯,直接点看,是这样的。不管现代计算机CPU有多快,内存可以大到哪里去,资源总归是有限的,物理学里面叫做什么熵熵熵的,俺大学专门挂科,也记不清了。既然资源有限,那么就一定得拼了老命滴想法子来在有限的资源上构建最佳的上层建筑,所谓最佳,就是前述所言之:最优时空开销。为了达到这个目的,就我目前浅薄的知识范围与领悟,一般有三种办法:l  从软件工程的角度进行系统设计;l  从数学的角度进行算法设计;l  从计算机组成原理的角度进行优化处理。每一项都是学

2011-05-17 08:38:00 1082

原创 [灌水]d堆的实现与测试文件

<br />#ifndef DHEAP_H_INCLUDED<br />#define DHEAP_H_INCLUDED<br /> <br />#include<vector><br />#include<limits><br />//#include<functional><br /> <br />//#define DEBUG<br /> <br />// 一些辅助工具<br />namespace heap_aux{<br />    constint MAX_SIZE = std::numeric

2011-05-12 00:47:00 1592 5

原创 数据结构二三事之第一话:二叉堆(上)

堆,很essential的数据结构,可惜严老大那本书上竟然没有,但《算法导论》上有。可能严老大有自己的考虑。但从个人体会来看,应该还是非常有必要好好研究研究这个数据结构的,且不说堆是实现优先级队列的基础设施,更不说堆是众多图算法——如Dijkstra最短路径算法、Prim算法——的实现利器,单就堆排序及一些选择性算法——如寻找最大的K个值——而言,堆就不可忽视。我们学习和研究一种数据结构,思维曲线一般可以遵从以下三步骤:这里,我说的是针对学习和研究,在实际解决问题的过程中,往往是先分析需求,这里侧重的指复杂

2011-05-10 03:27:00 11480 13

原创 关于C++的学习,对一位网友的回复

这篇文章有灌水的嫌疑,毕竟其实我不是大牛,不应该这么公开的说C++学习方法,尤其刘未鹏老大榜样在先了。其实,我更多的是希望获得更多交流的机会,也是对自己的学习历程的回顾,学了很久的C++,对C++其实还是一知半解,寻地洞深藏遮羞中呀!不过这也让我想起周国平先生的一句话,“我将永远困惑,也将永远行走;困惑是我的诚实,行走是我的勇敢”,下面说的大部分其实都是我自己没有做到的,囧啊,呜呜,我现在大四,回顾自己的大学生活,觉得太多东西都没有把握好,并没有学精深,算是“知耻而后勇,知不足而后愤”吧,希望在以后的日子里

2011-05-07 05:05:00 1879 5

原创 C++类对象内存模型与成员函数调用分析(下)

<br />2.4.2 多重继承下的虚拟函数<br /><br />多重继承下的虚拟函数主要有一下几个麻烦:<br />1.         几个父类都声明了相同原型的virtual函数;<br />2.         有不止一个父类将其析构函数声明为虚拟;<br />3.

2011-04-30 18:06:00 4359 8

原创 C++类对象内存模型与成员函数调用分析(中)

2.4 虚拟成员函数这是本文中最复杂也最有趣的话题了。虚拟函数也是和继承这个话题相伴相生,所以本节将纳入对单继承、多重继承和虚拟继承,一起描述他们之间的关系,这样,对C++对虚拟函数的调用,以及由此所变现出来的多态的理解,应该是非常清晰了。2.4.1 单继承下的虚拟成员函数对于虚

2011-04-30 17:58:00 4890 18

原创 C++类对象内存模型与成员函数调用分析(上)

C++类对象内存模型是一个比较抓狂的问题,主要是C++特性太多了,所以必须建立一个清晰的分析层次。一般而言,讲到C++对象,都比较容易反应到以下这个图表:这篇文章,就以这个表格作为分析和行文的策略的纵向指导;横向上,兼以考虑无继承、单继承、多重继承及虚拟继承四方面情况,这样一来,

2011-04-30 17:43:00 16139 63

原创 就当是迷你版的UNP吧

UNP很好,非常好,太好了。说UNIX/Linux下的网络编程是无法避免Richard Stevens的UNP的。但是说实在的,UNP太厚实了,是滴,全面,细腻是很好滴,但是对于初学者们来说,往往更重要的是尽快对socket编程上手,我想基本上只有还算上过《计算机网络》这门课的,

2011-04-10 04:28:00 1235 4

原创 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 899

原创 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 814

原创 数学建模那确实是很重要滴呀!USACO Solution Code(4):Transformations

<br />不知道自己算不算想复杂了,我把方块图案抽象成一个称为myDraft的模型出来。第一步是将符号化的图案抽象成1和0构成的矩阵,当然这一步很容易想到,然后,在这个矩阵的基础上,将每一行和每一列看成是一系列的比特位,假设某一行是:@-@---,第一步就是将其转化成:10100,然后再将其转化成一个十进制数,即2^4+2^2=20,保存下这个值,所有的行和列都进行同样的处理,处理的结果就是myDraft了。<br />为什么要搞一个这样的myDraft出来呢?当然是为了拿一坨见鬼的翻转和比较的方便了。以

2010-08-25 15:36:00 693

原创 USACO Solution Code(3):Milking Cows

<br />比较简单的题,不过这个题的模型很有普适性,很多涉及区间的操作其实是编程中很常见的一类问题。第一次提交的代码用到了STL的bitset,每读取一个时间段,就将该时间段涂色——即置“1”。若本着运行效率至上的原则,代码很多值得优化的地方,比如“涂色(tintage)”这种处理方法就不是最好的,直接用(start,end)序对来表示一个区间,然后进行区间的插入或合并操作,于空间和时间都是更好的办法。不过编码很比较复杂(看第二版本代码里那些个if-else)就知道了,呵呵,我始终认为,在复杂度可以接受的

2010-08-24 17:52:00 657

原创 USACO Solution Code(2)

黑色星期五(Friday the thirteenth)的程序。这些程序其实都很简单,没有很复杂的算法在里面,追求极致的Geek们可以从代码的长度、优雅简洁等方面下功夫了,俺伪Geek一个,写了个程序能通过,就不纠结了,哈哈…/*ID: fairyroadPROG: friday

2010-08-23 09:35:00 554

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除