自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

转载 poj 3660

题目大意: 输入连个整数n和m,表示牛的头数和即将输入的数据行数,每一行包括两个整数都是牛的编号,设为i和j,则有i牛能胜过j牛,最后输出能确定排名的牛的头数; 基本思路: 有n头牛, 给你m对关系(a, b)表示牛a能打败牛b, 求在给出的这些关系下, 能确定多少牛的排名。 分析: 关系闭包:   关系闭包有三种: 自反闭包(r), 对称闭包(s), 传递闭包(t

2017-04-03 23:44:17 257

转载 poj 3259

题目大意: 农夫约翰在探索他的许多农场,发现了一些惊人的虫洞。虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500)条路径,W(1≤W≤200)个虫洞。FJ作为一个狂热的时间旅行的爱好者,他要做到以下几点:开始在一个区域,通过一些路径和虫洞旅行,他要回到最开时出发的那个区域出发前的时间。也许他就能遇

2017-04-03 16:51:32 282

原创 Floyd—Warshall算法

算法描述: 适用于多源最短路问题,是一种动态规划算法,其状态转移方程如下: map[i,j]:=min{map[i,k]+map[k,j],map[i,j]},稠密图效果最佳,边权可正可负。时间复杂度:O(n^3);空间复杂度:O(n^2); 代码如下: #include #include #include #include using namespace std

2017-04-03 15:37:02 331

转载 poj1157

题目大意: 输入两个数,f和v,分别表示鲜花束数和花瓶数量,一个花瓶里只能放一束花,再输入一个矩阵,矩阵行列号分别表示鲜花代号和花瓶代号,每一束鲜花插到花瓶里都会有一个美学值,如图: ┌───┬───┬───┬───┬───┬───┐  │      │花瓶 1│花瓶 2  │花瓶 3 │花瓶 4  │花瓶 5│  ├───┼───┼───┼───┼───┼───┤  │杜鹃花│

2017-04-02 10:15:03 674

转载 poj 3661

题目大意: N分钟,奶牛每分钟可以选择是停下休息还是往前走,如果选择往前走的话可以在第i分钟走Di,当然,疲劳值也会增加1。如果选择休息则疲劳值会每分钟减小1,当奶牛停下来以后,只能在疲劳值降到0时才能继续再走。已知奶牛的疲劳值最多不能超过M,当小刚度过N分钟后要保证他的疲劳值为0,问小刚最多能走多长的距离。 基本思路: 先设dp[i][j]表示小明在i分钟,疲劳值为j时所能走的

2017-04-01 21:50:33 195

原创 poj 1163

题目大意: 输入一个整数n,输入一个n行三角形,每行n个数,从最顶数字出发,每次只能加整下方或正下方右边那个数,一直加到最后一行,让你求加到最大一行的最大值并输出; 基本思路: 1.记忆性数组(dp)+递归; 2.递推型动态规划; 代码1如下: #include #include #include #include #include using namespace

2017-03-31 21:15:35 294

转载 动态规划

动态规划:从新手到专家 March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。 前言 本文翻译自T

2017-03-31 17:54:06 166

原创 poj 1050

题目描述: 输入一个整数n,范围在正负127内,作为方阵维度,输入方阵,计算最大子矩阵和并输出: 基本思路: 对于求最大子序列和,采用动态规划思想,状态转移方程为temp[i] = (temp[i-1]>0?temp[i-1]:0)+buf[i];现在推广到二维上来,可以先让每一个二位数组元素存它所在列从第一行开始到它所在行的总和,这样就化二维为一维,接下来,就可以进行熟悉的动态规划了。

2017-03-31 15:40:26 189

转载 poj 1018

题意: 某公司要建立一套通信系统,该通信系统需要n种设备,而每种设备分别可以有m1、m2、m3、...、mn个厂家提供生产,而每个厂家生产的同种设备都会存在两个方面的差别:带宽bandwidths 和 价格prices。 现在每种设备都各需要1个,考虑到性价比问题,要求所挑选出来的n件设备,要使得B/P最大。 其中B为这n件设备的带宽的最小值,P为这n件设备的总价。

2017-03-30 23:08:59 183

转载 uva1025

#include #include #include using namespace std; int INF=0x3f3f3f3f; int kase=0; int main() {     int n;     while(scanf("%d",&n)&&n!=0)     {         int T,M1,M2,time[n+1];

2017-03-30 20:48:46 76

原创 重载字符的加减法

Description 定义一个字符类Character,只有一个char类型的数据成员。 重载它的+、-、>运算符,其中+、-的第二个操作数是int类型的整数n。“+”用于返回以当前字符之后的第n个字符为属性值的对象,“-”用于返回当前字符之前的第n个字符为属性值的对象。如样例所示。 Input 第1行N>0表示测试用例个数。 每个测试用包括1个字符(小写英文字母)和1

2017-03-30 20:11:12 735

转载 高精度模板

#include    #include    #include    #include    #include    #include    using namespace std;      const int MAXN = 410;      struct bign   {       int len, s[MAXN];       bign ()       {

2017-03-29 20:46:29 136

转载 poj 2506

题目大意: 有2×1和2×2两种规格的地板,现要拼2×n的形状,共有多少种情况 基本思路:递推; 假设我们已经铺好了2×(n-1)的情形,则要铺到2×n则只能用2×1的地板 假设我们已经铺好了2×(n-2)的情形,则要铺到2×n则可以选择1个2×2或两个2×1,故可能有下列三种铺法      其中要注意到第三个会与铺好2×(n-1)的情况重复,故不可取,

2017-03-29 20:31:43 1067

转载 poj 2109

代码1:discuss中的代码   [cpp] view plain copy #include    #include    #include    using namespace std;      int main()   {          double n,m;             while(scanf("%lf

2017-03-29 17:32:57 280

转载 poj 2586

题目大意:  讲的是一个奇怪的公司,它每个月要不然盈利S要不然亏损d。更有意思的是这家公司的数据出现问题,只记得自己在这一年12个月里面,任何连续五个月里面总体都是亏损的(里面可能有亏损有盈利,但和是亏损)。问有可能的最大盈利额是多少(要求输出)。   输入:s,d;   输出:如果盈利输出有可能的最大盈利额,如果亏损输出 Deficit。 解题思路:   和30

2017-03-29 17:29:40 201

翻译 poj 1328

题目大意: 以x轴为海岸线,x轴上方为海,下方为陆地,海中有岛,用(x,y)表示,输入两个整数,n和d,表示岛屿个数,和雷达能测的圆范围的直径,让你求能测出所有岛屿的最小雷达数,格式见样例; 基本思路: 该题题意是为了求出能够覆盖所有岛屿的最小雷达数目,每个小岛对应x轴上的一个区间,在这个区间内的任何一个点放置雷达,则可以覆盖该小岛,区间范围的计算用[x-sqrt(d*d-y*y),x+sq

2017-03-28 22:28:51 202

原创 BFS

BFS广度优先搜索:一般借助队列实现具体问题求解,跟深度优先搜索相似,也是一种枚举; 题目大意: 详见我的博客DFS 基本思路: 用队列实现BFS; 代码如下: (这次就不输出路径了,不过我留着用f表示在队列中的位置,读者可以试着写一写输出最短路径的情况,题目是《啊哈!算法》上的,所以代码大致相似,因为我就是这么学的) #include #include #include

2017-03-27 21:29:18 341

原创 poj 3984

题目大意: 定义一个二维数组:  int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。输入一个由

2017-03-26 20:18:00 434

原创 DFS

DFS实质就是一种枚举,不过借助递归实现; DFS的基本模式: void dfs(int step) { 判断边界; for(int i=1;i { dfs(step+1);/‘/继续下一步 } 返回; } 例题: 问题描述: 现有等式:【】【】【】+【】【】【】=【】【】【】,要求在每一个【】中填入0~9中某一个数字,最后使得等式成立且每个数字使用一次,输出等式,并输出

2017-03-26 11:00:43 3845 1

原创 poj 1753

题目大意: 输入4*4矩阵,每个元素只为‘b'或’w'代表黑或白,规则为每次翻转一个棋子,其周边棋子也被翻转,要求使用最少次数的翻转使矩阵全为黑或者全为白,并输出最少次数; 基本思路: 此题思路与poj2965一致,只是规则略有不同,详见我的博客poj2965; 代码如下: #include #include #include #include #include

2017-03-21 18:04:03 131

转载 八皇后问题

题目大意: 经典的八皇后问题,即在一个8*8的棋盘上放8个皇后,使得这8个皇后无法互相攻击( 任意2个皇后不能处于同一行,同一列或是对角线上),输出所有可能的摆放情况。 基本思路: 用一维数组存储,下标代表行,元素存储列的编号,在编程时只需比较列以及对角线是否符合规则即可,判断对角线是否符合规则时注意绝对值;下面是最简单的递归算法; 代码如下: #include using

2017-03-21 17:46:31 340

原创 poj 2965

题目大意:输入为4*4矩阵,每个位置代表一个开关,只包含‘+’和‘-’,‘+’代表关闭,‘-’代表打开,矩阵所有位置都为‘-’表示通过,每次打开某一位置开关,它所在行和列开关都会打开,输出通过的最少步骤,并输出步骤; 思路:改变一个开关奇数次效果都是一样的,相当于改变一次开关状态,偶数次相当于没动开关,且改变开关状态的顺序对结果没有影响(这一点自行论证);所以对于一共改变开关状态的次数,共有16

2017-03-21 17:09:33 177

转载 二叉树深度优先遍历

二叉树深度遍历有前序遍历,中序遍历,后序遍历三种 所谓前中后是指“遍历时先访问,或中间访问,或后访问根节点,都是对于根节点来说的!!!注意是根“节点”,左“子树”和右“子树”(所以对于根节点要输出时直接输出,而左右子树继续遍历)!!! 三种遍历都遵循以下规则: 1.每次到达一个节点,都将该节点视为根节点。(步骤1优先度最高); 2.进行中序遍历和后序遍历时若到达某一节点且该节点还有左子树或

2017-03-11 13:50:14 774

转载 uva 122 树的层次遍历

#include #include #include #include #include #include #include #include #include #include #include using namespace std; const int maxn =256+10; char s[maxn]; struct Node { int v; bool have_v

2017-03-11 10:04:19 194

空空如也

空空如也

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

TA关注的人

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