自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Switch的博客

分享并记录所学所见

  • 博客(457)
  • 资源 (19)
  • 问答 (4)
  • 收藏
  • 关注

原创 分治法——基本思想

分治法——基本思想设计过程划分问题:整个问题划分成多个无关联的子问题递归求解:求解各个子问题 递归调用正设计的算法 合并问题:合并子问题的解,形成原始问题的解分析过程建立递归方程求解递归方程递归方程的建立方法设输入大小为nn,T(n)T(n)为时间复杂性当n<cn<c,T(n)=θ(1)T(n)=\theta(1)划分阶段的时间复杂性 划分问题为a个子问题。每个子问题大小为

2016-07-14 14:13:03 1479

原创 动态规划——物品无限的背包问题

物品无限的背包问题 物品无限的背包问题。有nn种物品,每种均有无穷多个。第i种物品的体积为ViV_i,重量为WiW_i。选一些物品装到一个容量为CC的背包中,使得背包内物品在总体积不超过CC的前提下重量尽量大。1≤n≤1001≤n≤100,1≤Vi≤C≤100001≤V_i ≤C≤10000,1≤Wi≤1061≤W_i≤10^6。记忆化搜索解法dp要初始化为无法得到的值,比如说-1,使用mem

2016-07-13 18:28:25 6240

原创 116 - Unidirectional TSP

116 - Unidirectional TSPBackgroundProblems that require minimum paths through some domain appear in many different areas of computer science. For example, one of the constraints in VLSI routing problem

2016-07-13 16:46:49 589

原创 1347 - Tour

1347 - TourJohn Doe, a skilled pilot, enjoys traveling. While on vacation, he rents a small plane and starts visiting beautiful places. To save money, John must determine the shortest closed tour that

2016-07-11 20:47:19 449

原创 437 - The Tower of Babylon

437 - The Tower of BabylonPerhaps you have heard of the legend of the Tower of Babylon. Nowadays many details of this tale have been forgotten. So now, in line with the educational nature of this conte

2016-07-11 15:29:39 554

原创 1025 - A Spy in the Metro

1025 - A Spy in the MetroSecret agent Maria was sent to Algorithms City to carry out an especially dangerous mission. After several thrilling events we find her in the first station of Algorithms City

2016-07-10 20:32:41 547

原创 字符串匹配——Sunday算法

字符串匹配——Sunday算法基本思想及举例Sunday算法由Daniel M.Sunday在1990年提出,它的思想跟BM算法很相似:1只不过Sunday算法是从前往后匹配,在匹配失败时关注的是主串中参加匹配的最末位字符的下一位字符。如果该字符没有在模式串中出现则直接跳过,即移动位数 = 模式串长度 + 1;否则,其移动位数 = 模式串长度 - 该字符最右出现的位置(以0开始) = 模式串中该

2016-07-08 13:03:34 36744 25

原创 字符串匹配——BMH算法

字符串匹配——BMH算法给定主串T和模式串P,返回P在T中首次出现的位置,如果P不存在于T中,返回-1。这样的问题就是字符串匹配问题,这里给出BMH算法的思想。设主串T的长度为n,模式串P的长度为m。BMH(Boyer-Moore-Horspool)算法是BM(Boyer-Moore)算法的一种优化,根据《一种基于BMH算法的模式匹配算法》的分析,BMH算法要优于BM算法,BM算法的思想可以参考字符

2016-07-07 22:45:54 7995 1

原创 字符串匹配——KMP算法

字符串匹配——KMP算法给定主串T和模式串P,返回P在T中首次出现的位置,如果P不存在于T中,返回-1。这样的问题就是字符串匹配问题,这里给出KMP算法的思想。设主串T的长度为n,模式串P的长度为m。最大相同前缀后缀数组写法先根据前缀后缀,求出前缀数组prefix,再通过前缀数组,快速迭代扫描主串,并找到首次匹配的位置,找不到则返回-1。前缀数组prefix的求法将prefix[0]初始化为0,设m

2016-07-05 22:34:39 2570

原创 IntelliJ IDEA常用快捷键——基于Eclipse

IntelliJ IDEA常用快捷键——基于EclipsePS:自己使用的,有些需要修改快捷键。Mac与Windows按键对比^ = Ctrl ⇧ = Shift ⌥ = Alt ⌘ = Win快捷键(基于Eclipse)Ctrl+Space 补全Ctrl+G 找出用法Alt+Enter 修复错误Ctrl+Shift+Space 查看文档按住Ctrl点击关键字会跳到关键字的声明。A

2016-07-01 13:58:26 7183

原创 读《驯服烂代码——在编程操练中悟道》

读《驯服烂代码——在编程操练中悟道》第2章 按图索骥地编写代码第4章 调试一下第5章 用TDD重做编程操练题目第6章 消除假数据所带来的重复代码第8章 嗅出代码腐臭和新的测试点第9章 测试后行 vs 测试先行 TDD开发方法具有的优势第10章 何谓烂代码 烂代码的定义第一个项目实例第11章 记录所闻到的腐臭第12章 用测试描绘用户意图第13章 分而治之釜底抽薪第14章 分而治之

2016-06-26 19:59:42 3593

原创 字符串匹配——RabinKarp算法

字符串匹配——RabinKarp算法给定主串T和模式串P,返回P在T中首次出现的位置,如果P不存在于T中,返回-1。这样的问题就是字符串匹配问题,这里给出RabinKarp算法的思想。设主串T的长度为n,模式串P的长度为m。主串匹配起始位置s从0到n-m,计算出T[s..s+m-1]的对应值,与P[0…m-1]的对应值进行比较,如果相同,则匹配成功。不同,则s右移一位,也就是计算出T[s+1…s+m

2016-06-14 17:12:36 1207

原创 字符串匹配——枚举法

字符串匹配——枚举法给定主串T和模式串P,返回P在T中首次出现的位置,如果P不存在于T中,返回-1。这样的问题就是字符串匹配问题,这里先给出枚举法的思想。设主串T的长度为n,模式串P的长度为m。主串从0到n-m,每次选取连续的m个字符,跟模式串P的m个字符进行一一比较。伪代码BruteForce(T, P)01 for s <- 0 to n - m02 j <- 003 // check

2016-06-14 13:34:07 3548

原创 搜索策略

搜索策略 搜索是由初始状态到目标状态的求解过程,就搜索结果分类,分为可行解搜索1和最优解搜索2。搜索策略是在求解过程中使用的方法。搜索往往是通过树的形式来描述。搜索方式广度优先搜索(BFS)构造由根组成的队列QIf Q 的第一个元素x是目标节点 Then 停止从Q 中删除x,把x的所有子节点加入Q的末尾If Q空 Then 失败 Else goto 2深度优先搜索(DFS)构造一个

2016-06-13 18:30:53 7601

原创 滑动窗口的最小值问题

滑动窗口的最小值问题 滑动窗后的最小值问题。输入正整数k和一个长度为n的整数序列A1,A2,A3,…,AnA_1, A_2, A_3, … , A_n。定义f(i)f(i)表示从元素ii开始的连续kk个元素的最小值,即f(i)=min{Ai,Ai+1,…,Ai+k−1}f(i)=min\{A_i, A_{i+1},…, A_{i+k-1}\}。要求计算f(1),f(2),f(3),…,f(n−k

2016-06-09 12:52:56 6223

原创 11572 - Unique Snowflakes

Unique SnowflakesEmily the entrepreneur has a cool business idea: packaging and selling snowflakes. She has devised a machine that captures snowflakes as they fall, and serializes them into a stream of

2016-06-07 18:24:47 1135

原创 11054 - Wine trading in Gergovia

Wine trading in GergoviaAs you may know from the comic “Asterix and the Chieftain’s Shield”, Gergovia consists of one street, and every inhabitant of the city is a wine salesman. You wonder how this ec

2016-06-07 15:11:58 872

原创 11134 - Fabled Rooks

Fabled RooksWe would like to place nn rooks, 1≤n≤50001 \le n \le 5000, on a n×nn \times n board subject to the following restrictionsThe ii-th rook can only be placed within the rectangle given by i

2016-06-07 14:05:36 635

原创 1152 - 4 Values whose Sum is 0

4 Values whose Sum is 0The SUM problem can be formulated as follows: given four lists A,B,C,DA,B,C,D of integer values, compute how many quadruplet (a,b,c,d)∈A×B×C×D(a,b,c,d) \in A \times B \times

2016-06-05 22:01:25 1235

原创 1605 - Building for UN

Building for UNThe United Nations has decided to build a new headquarters in Saint Petersburg, Russia. It will have a form of a rectangular parallelepiped and will consist of several rectangular floors

2016-06-05 19:55:18 865

原创 120 - Stacks of Flapjacks

Stacks of FlapjacksBackgroundStacks and Queues are often considered the bread and butter of data structures and find use in architecture, parsing, operating systems, and discrete event simulation. Stac

2016-06-05 16:35:14 851

原创 Huffman编码解码

Huffman编码解码霍夫曼(Huffman)编码问题也就是最优编码问题,通过比较权值逐步构建一颗Huffman树,再由Huffman树进行编码、解码。其步骤是先构建一个包含所有节点的线性表,每次选取最小权值的两个节点,生成一个父亲节点,该父亲节点的权值等于两节点权值之和,然后将该父亲节点加入到该线性表中,再重复上述步骤,直至构成一个二叉树,注意已经使用过的节点不参与。Huffman编码贪心原理编码

2016-06-05 14:06:49 17897 4

原创 贪心法——区间选点问题

贪心法——区间选点问题 区间选点问题。数轴上有nn个闭区间[ai,bi][a_i, b_i]。取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个)。贪心思想:先按bb从小到大进行排序,再选择b0b_0作为选点pospos,如果出现ai>posa_i > pos,则以bib_i作为pospos,再按照这样的方式迭代。直至所有区间遍历完。区间选点问题算法实现// 区间数据结构

2016-06-04 13:31:28 3755

原创 贪心法——区间覆盖问题

贪心法——区间覆盖问题 区间覆盖问题。数轴上有n个闭区间[ai,bi][a_i, b_i],选择尽量少的区间覆盖一条指定线段[s,t][s,t]。先进行预处理,将不包含[s,t][s,t]的区间都去掉,然后再按左区间从小到大排序。如果最小区间的左区间大于ss的话,则无解。选取包含ss的右区间最大的区间,该区间的右区间仍然小于下一个区间的左区间,则无解。按照这样的方法一直选择到最后一个区间,如果

2016-06-03 22:18:36 4644

原创 贪心法——基本思想

贪心法——基本思想贪心法,顾名思义表示总是选择当前最优的,以期望达到整体最优。贪心法一般用于求解最优化问题。采用贪心法求最优化问题的算法,一般都包含一系列步骤,每一步都有一组选择,每次都选择当前最优的选择,希望通过局部最优的选择达到全局最优的选择。贪心法不一定总能产生最优解,可能产生近似解甚至完全不正确的答案,故想使用贪心法,最好是能够能够符合贪心法产生优化解的条件。贪心法产生优化解的条件

2016-06-03 18:12:57 7742

原创 贪心法——选择不相交区间

贪心法——选择不相交区间 选择不相交区间。数轴上有nn个开区间(ai,bi)(a_i, b_i)。选择尽量多个区间,使得这些区间两两没有公共点。贪心思路:按bb的大小,将区间从小到大排序,选择最小的区间,再选择和该区间无交点的最小区间,以此往复,知道遍历完所有区间。选择不相交区间算法实现// 区间数据结构struct Region { // 左区间 int left;

2016-06-01 18:17:03 2417

原创 贪心法——乘船问题

贪心法——乘船问题 乘船问题。有nn个人,第ii个人重量为wiw_i。每艘船的最大载重量均为CC,且最多只能乘两个人。用最少的船装载所有人。贪心思路:每次取最轻值wminw_{min}和最重值wmaxw_{max},如果wmin+wmax≤Cw_{min} + w_{max} \le C则wminw_{min}为次最轻值,wmaxw_{max}为次最重值。否则wmaxw_{max}为次重值。乘

2016-06-01 16:14:32 6274

原创 贪心法——部分背包问题

贪心法——部分背包问题 部分背包问题。有nn个物体,第ii个物体的重量为wiw_i,价值为viv_i。在总重量不超过CC的情况下让总价值尽量高。每一个物体都可以只取走一部分,价值和重量按比例计算。和最优转载问题一样,这题也可以用贪心法解决。但是这题有两个因素,重量和价值,所以应该综合考虑两个因素。直观的贪心策略是:优先拿性价比高的,也就是viwi\frac{v_i}{w_i}大的,直到重量恰好

2016-05-31 21:16:30 1498

原创 贪心法——最优装载问题

贪心法——最优装载问题 最优装载问题。给出nn个物体,第ii个物体重量为wiw_i。选择尽量多的物体,使得总重量不超过CC。只关心物体的数量,这样只需把所有物体按重量从小到大排序,依次选取每个物体,直到装不下为止。这就是一种典型的贪心算法,只顾眼前,但在一定程度上却能得到最优解。最优装载问题实现算法// 贪心法// 最优装载问题void optionalLoad(int *a, int n

2016-05-31 19:50:32 4841

原创 循环日程表问题

循环日程表问题 循环日程表问题。n=2kn=2^k个运动员进行网球循环赛,需要设计比赛日程表。每个选手必须与其他n−1n-1个选手各赛一次;每个选手一天只能赛一次;循环赛一共进行n−1n-1天。按此要求设计一张比赛日程表,该表有nn行和n−1n-1列,第ii行jj列为第ii个选手第jj天遇到的选手。该问题和棋盘问题很像,都可以通过递归思想来解。递归三部曲划分问题:将n=2kn=2^k个运动

2016-05-31 14:10:50 5745 1

原创 分治法——棋盘覆盖问题

分治法——棋盘覆盖问题 棋盘覆盖问题。有一个2k∗2k2^k*2^k的方格棋盘,恰有一个方格是黑色的,其他为白色。你的任务是用包含3个方格的L型牌覆盖所有白色方格。黑色方格不能被覆盖,且任意一个白色方格不能同时被两个或更多牌覆盖。如图所示为L型牌的4种旋转方式。 分治三步骤划分问题:将2k∗2k2^k*2^k的棋盘划分为2k−1∗2k−12^{k-1}*2^{k-1}这样的子棋盘4块。递

2016-05-30 21:59:58 35270 7

原创 二分查找求上界和下界

二分查找求上界和下界假设序列有序,其区间为[left,right)[left, right),设middlemiddle为区间中间值,现在需要获得首个出现元素vv的位置,如果不存在,返回一个位置,在此插入vv,序列仍然有序,则可以通过以下方式求出:if middle位置的值 = v:至少已经找到一个,左边可能还有,则区间变为[left,middle][left, middle]。if middl

2016-05-30 12:21:13 5159 1

原创 二分查找

二分查找二分查找在有序表里面,是非常常用的查找元素方式,其时间复杂度为log2nlog_2n,该算法也可以用分治法进行表示。突然发现一问题,常见区间范围一般都是以[x,y)[x, y)左闭右开这个的形式来进行表示的,个人写的却是[x,y][x, y]闭区间。这是一个问题,希望以后能够以前一种范围来考虑问题。分治三步骤划分问题:将有序表划尽可能划分为相等的两部分[left,middle)[left

2016-05-30 11:44:23 816

原创 分治算法主定理

分治算法主定理分治算法通常遵守一种通用模式:即:在解决规模为nn的问题时,总是先递归地求解aa个规模为nb\frac{n}{b}的子问题,然后在O(nd)O(n^d)时间内将子问题的解合并起来,其中a,b,d>0a,b,d > 0是一些特定的整数。分治算法的运行时间可以通过公式:T(n)=aT(⌈nb⌉)+O(nd)T(n) = aT(\lceil \frac{n}{b} \rceil) + O(n

2016-05-29 21:01:20 8020

原创 快速选择问题

快速选择问题 快速选择问题。输入nn个整数和一个正整数k(1≤k≤n)k(1≤k≤n),输出这些整数从小到大排序后的第kk个(例如,k=1k=1就是最小值)。n≤107n≤10^7。从题目上看,其n的的取值范围为[1,107][1, 10^7],由之前的那张算法时间复杂度选择表,可以看出,使用O(nlog2n)O(nlog_2n)及以上时间复杂度超时的可能性非常大,这时候最好的选取O(n)O(

2016-05-29 20:25:25 2495 5

原创 算法竞赛——快速排序

算法竞赛——快速排序快速排序算法和归并排序算法都可以用分治法的思想来解决,其区别是归并排序是等份左右划分,而快速排序则是按标兵进行划分,也不需要合并。分治三步骤划分问题:按标兵元素,将序列分成左右两部分,左边序列全小于等于标兵元素,右边序列全大于等于标兵元素。递归求解:把左右两部分分别排序。合并问题:不用合并,因为容器内元素已然有序。算法实现// 快速排序算法void qSort(int *

2016-05-29 18:57:06 900

原创 逆序对问题

逆序对问题 逆序对问题。给一列数a1,a2,…,ana_1, a_2, … , a_n,求它的逆序对数,即有多少个有序对(i,j)(i,j),使得i<ji < j但ai>aja_i > a_j。nn可以高达10610^6。由于nn的数量级到了10610^6,所以采用O(n2)O(n^2)及以上的时间复杂度肯定会超时,所以必须选取O(nlog2n)O(nlog_2n)及以下时间复杂度的算法。逆

2016-05-29 16:09:41 4410 2

原创 算法竞赛——归并排序算法

算法竞赛——归并排序算法分治法划分问题:把序列分成元素个数尽量相等的两半递归求解:把两半元素分别排序合并问题:把两个有序表合并成一个借鉴RuJia的精妙的合并过程void merges2(int *a, int lef, int righ) { // 递归边界 if(lef == righ) { return ; } // 取中值 int

2016-05-29 14:36:07 628

原创 算法竞赛中的时间复杂度选择——以最大连续和问题为例

最大连续和问题 最大连续和问题。给出一个长度为nn的序列 A1,A2,…,AnA1, A2,…, An,求最大连续和。换句话说,要求找到1≤i≤j≤n1≤i≤j≤n,使得Ai+Ai+1+...+AjA_i+A_{i+1}+...+A_j尽量大。时间复杂度为n3n^3的算法LL maxConSumN3(LL *a, LL n) { tot = 0; conSum = -INF;

2016-05-28 22:18:32 4018

原创 迭代加深搜索

埃及分数问题。在古埃及,人们使用单位分数的和(即1/a,a是自然数)表示一切有理数。例如,2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为在加数中不允许有相同的。对于一个分数a/b,表示方法有很多种,其中加数少的比加数多的好,如果加数个数相同,则最小的分数越大越好。例如,19/45=1/5+1/6+1/18是最优方案。 输入整数a,b(0<a<b<500)a,b(0<a<b<5

2016-05-28 17:08:29 1511

个人博客设计文档

自己写的一个小blog网站的设计文档,该网站采用的是SSH和Bootstrop技术。具体内容请参考文档,项目在https://github.com/Switch-vov/MyBlog上,如有需要请自行下载,但需要注明出处,谢谢合作。

2016-04-28

Linux学习未做笔记部分

包括第二十五讲邮件服务.ppt,第二十六讲HA集群.ppt,第二十七讲LB集群.ppt,第二十八讲运维安全+面试技巧.ppt

2016-04-12

oolong.jar

将oolong.jar加入classpath,在控制台通过java COM.sootNsmoke.oolong.Gnoloo 字节码文件就能导出相应的j后缀文本文件。 例如:java COM.sootNsmoke.oolong.Gnoloo HelloWorld.class 就能在HelloWorld.class文件目录下生成相应的HelloWorld.j文件

2016-03-21

Java网络编程案例--CS模型的简单实现

Java网络编程案例--CS模型的简单实现

2016-03-13

SpringMVC实战-雇员薪资管理系统

SpringMVC实战-雇员薪资管理系统,Spring2.5+Hibernate3.3+Struts1.3

2016-02-29

SSH整合包(S1.3+S2.5+H3.3)

SSH整合开发包,版本为Struts1.3+Spring2.5+Hibernate3.3

2016-02-29

Struts框架文件上传下载案例

Struts框架文件上传下载案例,需要的自取。

2016-01-29

JSTL使用手册

JSTL使用手册,需要的自取

2016-01-25

JSTL1.2 JAR包

JSTL1.2 JAR包,需要的自取

2016-01-25

Struts三种开发方法案例

Struts三种开发方法案例,包括全手工、半手工半工具、全工具。需要自取

2016-01-22

Struts1.3和config配置详解

Struts1.3的帮助文档、Jar包和struts-config.xml的配置详解

2016-01-22

Javaweb购物车

简单的购物车,使用Java开发,采用Web-Service实现的MVC模式。

2016-01-09

考勤管理系统

该文档是考勤管理系统的需求文档,需要的自取

2016-01-07

用户管理系统

一个简单的用户管理系统,用Servlet开发的,可以进行扩展。

2016-01-05

Java集合框架源码

Java集合框架源码,需要的自行下载!

2015-10-30

一个简单的PHP Web论坛

一个简单的PHP Web论坛源代码及详细注释,需要的自取。 一个简单的PHP Web论坛源代码及详细注释,需要的自取。

2015-09-15

一个简单的PHP邮件列表管理器

一个简单的PHP邮件管理器,有详细的注释以及开发文档。

2015-09-11

一个简单的PHP购物车系统

一个简单的PHP购物车系统,有需要的可以下载

2015-09-02

PHP在线书签系统

一个简单的PHP在线系统,含详细代码,需要的请下载。

2015-08-28

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

TA关注的人

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