代码改变世界

随笔档案-2011年09月

hduoj Stars 二维树状数组

2011-09-30 18:46 by javaspring, 192 阅读, 收藏,
摘要: 话说这道题是一道不折不扣的二维树状数组的水题,可是对于我这种菜鸟中的vip来说,却还是纠结了很久很久。。留下做个模板吧。。。。。题目:Yifenfei is a romantic guy and he likes to count the stars in the sky.To make the problem easier,we considerate the sky is a two-dimension plane.Sometimes the star will be bright and sometimes the star will be dim.At first,ther... 阅读全文

也谈分层

2011-09-30 10:05 by javaspring, 215 阅读, 收藏,
摘要: 最近在网上看了很多关于架构的文章,比较流行的是三层架构。我也来凑个热闹,跟着扯一扯分层。我们从大处往小处说,先说,什么是架构?架构是一系列相关的抽象模式,用于指导大型软件系统各方面的设计。它描述一个软件系统从整体到部分的最高层次的抽象划分。直接认为架构就是系统草图也不为过。根据我们关注的角度不同,架构大概有三种:1、逻辑架构,主要描述软件系统中元件之间的关系,例如用户界面,数据库,业务逻辑元件等等2、物理架构,主要描述软件元件是如何安装到硬件上的。3、系统架构,主要描述系统的非功能性特征,如可扩展性、可靠性、强壮性、灵活性、性能等。可以看到,系统架构师必须具备软件和硬件两方面的过硬能力,还得有 阅读全文

抽象工厂模式(Abstract Factory)

2011-09-29 21:38 by javaspring, 336 阅读, 收藏,
摘要: 一、概要 抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式提供一种“封装机制”用来解决“多系列具体对象”的创建工作,降低客户端和“创建工作”的紧耦合度。二、生活中的例子 例如一个汽车工厂(抽象工厂),拥有四个下属汽车工厂(具体工厂),分别是生产轿车,越野车,客车,每个工厂都要有生产各自类型汽车配件的车间(方法)。 考虑到开闭原则,增加新车型工厂容易,增加新型配件不容易。图示:三、实现思路 当有多个抽象产品,且每个抽象产品都有多于一个的具体子类的时候,而抽象工厂角色又提供多个具体的工厂角色,分别对应多个具体的产品角 阅读全文

NYOJ 420 二分法

2011-09-28 18:56 by javaspring, 164 阅读, 收藏,
摘要: 二分法的应用,,,题目:一个很简单的问题,求1^p+2^p+3^p+……+n^p的和。输入第一行单独一个数字t表示测试数据组数。接下来会有t行数字,每行包括两个数字n,p,输入保证0<n<=1000,0<=p<=1000。输出输出1^p+2^p+3^p+……+n^p对10003取余的结果,每个结果单独占一行。样例输入2 10 1 10 2 样例输出55 385ac代码:#include <iostream> #include <string.h> #include <string> #include <cmath> #in 阅读全文

杭电 OJ Color the ball 树状数组

2011-09-28 14:27 by javaspring, 236 阅读, 收藏,
摘要: 一道简单的树状数组的题,不过用cin和cout TLE,用printf和scanf 竟然只用了600多ms,这倒是让我意外了。。。题目:N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?Input每个测试实例第一行为一个整数N,(N <= 100000).接下来的N行,每行包括2个整数a b(1 <= a <= b <= N)。 阅读全文

杭电OJ 敌兵布阵 树状数组

2011-09-28 12:57 by javaspring, 247 阅读, 收藏,
摘要: 是一道简单的树状数组的题,,是一道简单题。。。。。题目:C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。中央情报局要研究敌人究竟演习什么战术,所以Tidy要随时向Derek汇报某一段连续的工兵营地一共有多少人,例如Derek问:“Tidy,马上汇报第3个营地到第10个营地共有多少人!... 阅读全文

杭电oj 1541 树状数组

2011-09-28 11:25 by javaspring, 186 阅读, 收藏,
摘要: 暑假时和xd讨论过这道题,当时迷迷糊糊的做了出来,昨天做专题练习时,怎么也想不出来怎么和树状数组联系起来。昨天想了有几个小时,今天又想了想,终于想了出来。自己感觉这是一道树状数组的好题,也是有一定难度的。题目:Astronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let the level of a star be an amount of the stars that are not hi... 阅读全文

NYOJ 413 月赛的悲剧

2011-09-27 15:31 by javaspring, 175 阅读, 收藏,
摘要: 话说这道题是月赛时的第一题,想这道题至少想了一个半小时,当时的基本思路已经想出来了,就有一个地方一直实现不了,于是就一直在想,悲剧的是,最后还是没能实现。更悲剧的是,最后一个半小时,一次也没提交。。昨天又想了想,还是卡在了那个地方,刚才突然灵光一现,,,,想了出来,,不容易啊。。。。题目:A single positive integer i is given. Write a program to find the digit located in the position i in the sequence of number groups S1S2...Sk. Each group S. 阅读全文

NYoj 416 数论的一个小知识

2011-09-26 10:59 by javaspring, 170 阅读, 收藏,
摘要: 话说这道题是昨天月赛的题目,是一个简单的数论题。可悲的是,当时竟然不知道这个结论,比赛过后,才知道这道题有多么的水。昨天的比赛,那就是一个悲剧。剩下一个半小时左右,连一次也没提交。。。。。。。悲催。。。。题目:Ten mathematicians are flying on a balloon over the Pacific ocean. When they are crossing the equator they decide to celebrate this event and open a bottle of champagne. Unfortunately, the cork . 阅读全文

工厂方法模式(Factory Method)

2011-09-25 07:45 by javaspring, 225 阅读, 收藏,
摘要: 一、概要 工厂方法(FactoryMethod)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。二、生活中的例子 例如移动电信运营商,不同的话费套餐形式,如动感地带,神州行,全球通等。我们可以把抽象工厂(套餐工厂)做成一个接口,这个接口只有一个方法,就是创建抽象产品(计费类)的工厂方法。然后所有的要生产具体类(动感地带,神州行等)的工厂去实现这个接口,由具体的套餐工厂去创建具体的套餐类。于是我们再增加新的套餐的时候,就不需要更改原有的工厂类,只需要增加此功能的计费类和相应的工厂类就可以了。图示:三、实现思路 工厂方法模式是对简单工厂模式进行了抽象。有一个抽象的Fact 阅读全文

数论之求欧拉函数

2011-09-24 09:10 by javaspring, 221 阅读, 收藏,
摘要: 简单的求欧拉函数的值,留下来做个模板。。。。。。。。。。题目:Given n, a positive integer, how many positive integers less than n are relatively prime to n? Two integers a and b are relatively prime if there are no integers x > 1, y > 0, z > 0 such that a = xy and b = xz.InputThere are several test cases. For each test c 阅读全文

poj 2002 二分法的强大应用

2011-09-22 18:31 by javaspring, 211 阅读, 收藏,
摘要: 自认为是一道很有难度的题,,同时也再一次体会到了二分的强大,,,,题目:A square is a 4-sided polygon whose sides have equal length and adjacent sides form 90-degree angles. It is also a polygon such that rotating about its centre by 90 degrees gives the same polygon. It is not the only polygon with the latter property, however, as a. 阅读全文

poj 题目分类

2011-09-22 14:43 by javaspring, 140 阅读, 收藏,
摘要: 1、 排序1423, 1694, 1723, 1727, 1763, 1788, 1828, 1838, 1840, 2201, 2376, 2377, 2380, 1318, 1877, 1928, 1971, 1974, 1990, 2001, 2002, 2092, 2379,1002(需要字符处理,排序用快排即可) 1007(稳定的排序) 2159(题意较难懂) 22312371(简单排序) 2388(顺序统计算法) 2418(二*排序树)2、 搜索、回溯、遍历1022,1111,1118,1129,1190,1562,1564,1573,1655,2184,2225,2243,231 阅读全文

索引器indexer

2011-09-22 08:48 by javaspring, 315 阅读, 收藏,
摘要: 一、索引器的基本概述 索引器定义类似于属性,但其功能与属性并不相同,可以看成是属性的增强版,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写。1、索引器的定义定义的一般形式:[修饰符] 数据类型this[索引类型 index]{ get{//获得属性的代码} set{ //设置属性的代码}}修饰符包括public,protected,private,internal,new,virtual,sealed,override, abstract,extern.this关键字用于定义索引器。this表示操作本对象的数组或集合成员,可以简单把它理解成索引器的名字,因此索引器不能具有 阅读全文

数论之数字根 杭电1013

2011-09-20 19:21 by javaspring, 235 阅读, 收藏,
摘要: 做这道题就有一种感觉,,数学真是奇妙,,在网上查了一下,才知道数字根有那么多奇妙的性质。不过,对于这道题我却是不太理解,,主要是不会证明为什么数字根就是各个位加起来对9取余,,我试着用同余证了一下,,可惜,,没证出来,,还希望高手指点。题目:The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulti. 阅读全文

STL 之map 杭电1075

2011-09-20 16:23 by javaspring, 296 阅读, 收藏,
摘要: 话说这道题我本来是想用来练字典树的,没想到用map竟然也可以做出来,而且代码还这么的简便,,,stl真的很强大啊,,,而且代码对字符串的处理也很精妙,,,是一道好题。。。。。题目:Ignatius is so lucky that he met a Martian yesterday. But he didn't know the language the Martians use. The Martian gives him a history book of Mars and a dictionary when it leaves. Now Ignatius want to tra 阅读全文

C#委托(delegate)与事件(event)

2011-09-20 09:27 by javaspring, 213 阅读, 收藏,
摘要: 在C#中,委托(delegate)是一种引用类型,在其他语言中,与委托最接近的是函数指针,但委托不仅存储对方法入口点的引用,还存储对用于调用方法的对象实例的引用。简单的讲委托(delegate)是一种类型安全的函数指针. 仅仅看它的概念,可能还是很模糊,我们来举例子由浅入深地说明一下。(强烈提醒:注意代码中的一些关键注释。代码完全可以复制下来直接运行。) 需求:《收费系统》计费标准:会员1元/小时;临时用户:1.5元/小时。//我们先来看看不使用委托,该如何实现usingSystem; namespace不使用委托 { class Program { ... 阅读全文

杭电1251 字典树典型应用

2011-09-20 09:06 by javaspring, 201 阅读, 收藏,
摘要: 一道字典树的简单题,,不过对于我这种刚学字典树的菜鸟来说,还是纠结了很长时间,,,可以留下来做个模板,,,,题目:Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).Input输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.注意:本题只有一组测试数据,处理到文件结束.Output对于每个提问,给出以该字符串为前缀的... 阅读全文

字典树的简单应用 NYoj 290

2011-09-19 18:17 by javaspring, 280 阅读, 收藏,
摘要: 这是一道字典树的典型应用,算是一道简单题吧,我是刚学字典树,话说也是理解了一天才理解了这种数据结构,,学数据结构的孩子你伤不起啊。。。。。。题目:在美丽大兴安岭原始森林中存在数量繁多的物种,在勘察员带来的各种动物资料中有未统计数量的原始动物的名单。科学家想判断这片森林中哪种动物的数量最多,但是由于数据太过庞大,科学家终于忍受不了,想请聪明如你的ACMer来帮忙。输入第一行输入动物名字的数量N(1<= N <= 4000000),接下来的N行输入N个字符串表示动物的名字(字符串的长度不超过10,字符串全为小写字母,并且只有一组测试数据)。输出输出这些动物中最多的动物的名字与数量,并用 阅读全文

单例模式(Singleton)

2011-09-18 15:13 by javaspring, 200 阅读, 收藏,
摘要: 一、概要 单例模式,提倡简约而不简单,透漏一种简捷美。它保证一个类仅有一个实例,并提供一个访问它的全局访问点。要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。二、生活中的例子 1、在中国,一个男人只能有一个合法妻子 2、世界上只能有一个中国 3、windows只能有一个任务管理器 等等三、实现思路 一个类能返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用getInstance这个名称);当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的... 阅读全文

C#构造函数和析构函数

2011-09-17 21:13 by javaspring, 230 阅读, 收藏,
摘要: 构造函数和析构函数 转载http://www.cnblogs.com/philzhou/archive/2010/08/10/CSharp_Constructor.html本节说明对象的创建、初始化和销毁过程。本节介绍下列主题: l 类构造函数l 结构构造函数l 析构函数类构造函数本节将讨论三种类构造函数:类构造函数的类型注释实例用于创建并初始化类的实例。私有在类之外不可访问的特殊类型实例构造函数。无法用私有构造函数来实例化类。静态在创建第一个实例或引用任何静态成员之前,将自动调用这种构造函数来初始化类。无法直接调用这种构造函数。备注(1) 实例构造函数创建新对象时将调用类构造函数,例如:Po 阅读全文

最大公约数 数论

2011-09-15 19:51 by javaspring, 235 阅读, 收藏,
摘要: 是关于数论中的一个关于最大公约数的证明,,,是一个简单问题,不过暑假之前我还是不会的,今天看数论时看到了这个问题,,特来和大家分享一下。设m=x*n+r;则gcd(m,n)=gcd(n,r);证明如下:设d=gcd(m,n), dd=gcd(n,r); 则d|m, d|n, d|(x*n+r),因为d|n,所以可推出d|r,即d是r和n的公约数,所以d小于等于dd,,,同理可证,dd小于等于d,,所以d=dd,命题得证。此结论是辗转相除法求最大公约数的主要思想。 阅读全文

C#方法重载(overload)方法重写(override)隐藏(new)

2011-09-15 12:38 by javaspring, 284 阅读, 收藏,
摘要: 一、重载:同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法的参数列表不同。这样才能通过传递不同的参数来决定到底调用哪一个。 值得注意的是,方法重载只有通过参数不同来判断调用哪个方法,而不能通过返回值。至于原因,可以这样理解,你调用一个方法,如果有多个方法同名,系统必须要知道到底你要调用哪一个,参数可以帮助系统在方法入口处得到答案,他根据你给的参数就知道该使用哪个方法。如果只有返回值的不同,很多情况系统是不可能得到有效的判断条件的,比如:double method();int method();如果你这样调用:method()。系统当然不知道该调用哪个。示例://返回值相同.. 阅读全文

java.lang.IllegalMonitorStateException 异常出现原因

2011-09-08 09:00 by javaspring, 440 阅读, 收藏,
摘要: java.lang.IllegalMonitorStateException违法的监控状态异常。当某个线程试图等待一个自己并不拥有的对象(O)的监控器或者通知其他线程等待该对象(O)的监控器时,抛出该异常。例子://计算线程//获取计算结果并输出package com.intlgj.thread; //获取计算结果并输出 public class ReaderResult extends Thread { Calculator c; public ReaderResult(Calculator c) { this.c = c; } public void run() { syn... 阅读全文

UML基础与应用系列文章汇总

2011-09-05 20:50 by javaspring, 154 阅读, 收藏,
摘要: 统一建模语言(UML是 Unified Modeling Language的缩写)是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。 统一建模语言 (UML)是非专利的第三代建模和规约语言。 UML是在开发阶段,说明,可视化,构建和书写一个面向对象软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。 UML可以贯穿软件开发周期中的每一个阶段。被OMG采纳作为业界的标准。 UML最适于数据建模,业务建模,对象建... 阅读全文

什么是UML(UML总结)

2011-09-04 07:40 by javaspring, 416 阅读, 收藏,
摘要: 统一建模语言(UML是 Unified Modeling Language的缩写)是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。 统一建模语言 (UML)是非专利的第三代建模和规约语言。 UML是在开发阶段,说明,可视化,构建和书写一个面向对象软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。 UML可以贯穿软件开发周期中的每一个阶段。被OMG采纳作为业界的标准。 UML最适于数据建模,业务建模,对象建模,组件建模。... 阅读全文

什么是RUP

2011-09-01 07:51 by javaspring, 570 阅读, 收藏,
摘要: 一、RUP产生的背景 UML能够用来为系统进行面向对象建模,但是并没有指定应用UML的过程,它仅仅是一种语言,它是独立于任何过程的。如果想要成功的应用UML一个好的过程是必要的。合理的过程能够有效的测度工作进度,控制和改善工作效率。目前有很多的过程,其中能够和UML最佳结合的是RUP,该过程是提出UML的人开发的,能够与UML很好的结合。二、下面这张图介绍了RUP的基本内容清晰大图地址:http://35free.net/shan9liang/UML/Rup.htm 阅读全文