自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

perfectjob的专栏

Do what I like to do

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

原创 幻方的生成

幻方,有时又称魔方(该称呼现一般指立方体的魔术方块)或纵横图,由一组排放在正方形中的整数组成,其每行、每列以及两条对角线上的数之和均相等。通常幻方由从到的连续整数组成,其中为正方形的行或列的数目。因此阶幻方有行列,并且所填充的数为从到。幻方可以使用阶方阵来表示,方阵的每行、每列以及两条对角线的和都等于常数,如果填充数为,那么有根据幻方阶数的不同,产生幻方的方法也不区别一般可

2013-05-22 22:49:18 1513

原创 树形DP

概念:树形DP其实就是可以通俗的称为树上的DP,传统的递推法可以表示为“对于每个状态i,计算f(i)”,或者称为“填表法”。这需要对每个状态i,找到f(i)依赖的所有状态,在某些情况下并不方便。另一种方法是“对于每个状态i,更新f(i)所影响的状态”,也称为“刷表法”,有时比填表法方便。举例:树的最大独立集对于一颗n个节点的树,选出尽量多的节点,使得任意两个节点均不相邻,称为最大独立集

2013-05-14 22:09:32 585

原创 最长路问题

定义:最长路一般用在DAG上,也即为从DAG上的某点到大另外一点走的最长路径应用举例:嵌套矩形有n个矩形,每个矩形用两个整数a,b描述,分别表示长和宽,矩形X(a,b)可以嵌套到矩形X(c,d)内当且仅当a推广:二维情况可以推广到n维解答:首先讲矩形嵌套关系定义为有向图的边,这样就可以建立一个有向图DAG,然后求DAG上的最长路即可最长路的求法:若i->j有边,则d[j] =

2013-05-14 15:48:12 1032

原创 最大值最小问题

问题:把一个包含n个正整数的序列划分成m个连续的子序列(每个正整数恰好属于一个序列)。设第i个序列的各数之和为S(i),现在的问题是使得所有的S(i)的最大值尽量小。数据:1 2 3 2 5 4划分为3个序列的最优方案为1 2 3 | 2 5 | 4,其中S(1)、S(2)、S(3)分别为6、7、4,最大值为7;如果划分成1 2| 3 2 | 5 4,则最大值为9,不如刚才的好。分

2013-05-13 21:17:08 877

原创 二分查找 编程之美3.11 程序改错

3.11 程序改错这题考察了读者对各种二分查找的的掌握程度,并且还有编码的正确性。二分查找的原理看似简单,但是如果边界条件没有处理好,极易出现死循环或者得不到正确的答案。下面总结了编程之美上要求的5种二分查找的代码写法,其中肯定有没有想到的情况,望网友留言指正1、给定一个有序(不降序)数组arr,求任意一个i,使得arr[i]等于v,不存在则返回-1int AnyEqu

2013-04-02 15:14:53 700

原创 构造数独和解数独

数独,俗称九宫格,由一个9×9的网格组成,整个网格又分成9个3×3的小正方形网格,每个格子有一个数字(1~9),数独满足如下要求:(1)每个数字在每一行只出现一次(2)每个数字在每一列只出现一次(3)每个数字在每个3×3的小区域中也只出现一次如下图所示,为我们比较常见的数独形式,为一个缺了数字的数独,现在要求我们把其补充为一个完整的数独。其实,构造数独和解数独的步骤差不

2013-03-14 21:51:27 1069

原创 取石子游戏系列(1)

题目来自《编程之美》一排石头的游戏N块石头排成一列,每块石头都有自己的固定位置,也就是相当于有自己的编号一样。两个玩家依次取石头,每个玩家每次可以取其中任意一块石头,或者相邻的两块,最后将所有石头取走的玩家赢。这个游戏有必胜策略吗?取石子有很多变种,限定取石子的规则,就能产生不同的玩法。这类游戏可以称作博弈。博弈有一个基本概念是必胜状态和必败状态。玩家想赢的话,就必须每次都使自

2013-03-11 21:50:26 683

原创 字母重排 stl

我们假设字典大小为n,需要查询的单词数位m如果直接拿每次遇到的单词与字典中的每个单词进行比较,时间复杂度O(mn)如果我们先将字典排好序,并且每个单词也是排好序的,那么每次查询耗时O(logn),总的时间复杂度为O(nlogn+mlogn),在实际的应用中,我们可以先把字典排好序,以后每次查询的时间就是O(logn),如果不排序,每次查询要O(n),在字典较大和查询次数较多时,第二钟方法较

2013-01-21 19:21:19 331

原创 C++输入输出运算符重载

C++允许运算符重载的目的是为了简化代码的编写和进行封装以便更好的使用。但是C++运算符重载也有一些要求,比如有些运算符需要定义为类成员函数,而另外一些则要求定义为类的友元函数。这里比较典型的就是输入输出运算符的重载,这两类运算符只能声明为类的友元函数。为什么呢?因为如果将其定义为类的成员函数,调用时必须有类对象来调用,但是输入输出运算符的调用者为>的流对象。下面的一个例子

2013-01-20 18:37:23 470

原创 阶乘——高精度求法

n! = n * (n-1) * (n-2) * ...* 2 * 1我们经常说一个算法的时间复杂度是指数级或者阶乘级的非常恐怖的。因为一个很小的数阶乘的结果是很大的一个数。12!=479 001 600, 13!就已经超过了int的表示范围。所以当我们要求一个很大的数的阶乘时,必须使用高精度来表示,否则越界。阶乘的高精度运算可以模拟一个整数与一个大整数的乘法运算,具体运算过程就和做手算乘

2013-01-18 10:38:40 783

原创 poj1221 dp

题意:题目首先告诉我们神马叫做A Unimodal Palindromic sequence,也就是一个序列先递增然后再递减(即单峰),而且是对称的。已知一个数字N,我们可以把数字N拆分成很多个Unimodal Palindromic sequence,例如1: (1) 2: (2), (1 1) 3: (3), (1 1 1) 4: (4), (1 2 1), (2 2),

2013-01-08 21:00:09 473

原创 poj1080 dp

题意:已知两段基因序列,求这两段基因序列的最大相似度。由于基于只由ACGT组成,而且缺省的基因可以用字符“-”来代替,已知任意两个基因的相似度表(包括-),求两段             基因的最大相似度。由于两段基因可能丢失了个别基因,使得长度不等,可以通过补充字符"-",但是进行比较时,两段基因不能在同一个位置都为“-”。基因序列相似度表样例:7 AGTGATG 5

2013-01-07 20:56:19 290

原创 poj1042 动态规划 贪心

题目大意:一个人去钓鱼,有n个池塘,第i个池塘初始时可以钓到F[i]条鱼,但是每过一个时间单位(这里是5分钟),池塘里的鱼就会减少d[i]条,从第i个池塘行走到第i+1个池塘需要花t[i]个时间单位,问这个人在规定的h小时内最多可以钓到多少鱼,以及在每个池塘待多长时间(如果有几种方案,尽量使待在前面的池塘的时间久一些)。最近在做一些动态规划的题目,发现动态规划的题目很难,特别是如何

2012-12-31 10:12:02 583

原创 poj1141 动态规划

题意:定义了regular brackets sequence,即满足以下条件:1、空串是regular brackets sequence2、如果S是regular brackets sequence,则[S]和(S)也是regular brackets sequence3、如果A、B都是regular brackets sequence,则AB也是regular bracket

2012-12-31 10:09:25 336

原创 最大子矩阵和

poj1050最大子矩阵和问题是由数组最大连续子段和引出来的。有关最大连续子段和问题的动态规划解一般人都情况,这里就不在累述。首先明确一段关于矩阵最大子矩阵和问题用例子来说明一目了然给定以下的一个4×4的矩阵(这里以方阵来解释)0  -2  -7  0 9   2  -6  2 -4  1  -4  1 -1  8  0  -2 这个方阵的最大子矩阵

2012-12-31 10:03:32 454

空空如也

空空如也

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

TA关注的人

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