自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学无纸巾

终习

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

原创 搜索二叉树的定义及操作

一.定义: 二叉搜索树是满足以下性质的二叉树。 1.非空左子树的所有键值小于其根结点的键值; 2.非空右子树的所有键值大于其根结点的键值; 3.左右子树都是二叉树。二.二叉搜索树的储存: 二叉搜索树的储存和普通二叉树的储存一样,一般用链表储存。三.二叉搜索树的查找: 1.查找关键字为X的结点,返回其所在的地址: 将X值与结点值做对比,如果相等那么这个数找到,如果小于应该再递归在左子树上

2016-11-29 20:48:39 1254

原创 poj 2996 Help Me with the Game

poj 2996 Help Me with the Game题意: 给你一个图表,表内大写的“k,q,b,r,n,p”表示白,小写的表黑;制表的最后一行为1,第一列为A,要求输出白和黑的字母位置,按其要求的顺序。(白:先按类型K>Q>R>B>N>P,从下行往上行,从左列往右列;黑:先按类型K>Q>R>B>N>P,从上行往下行,从左列往右列;) 题解: 没啥意思的模拟题,二维数组处理出表,然后按顺序

2016-11-24 21:15:02 292

原创 poj 3295 Tautology

poj 3295 Tautology(枚举)题意:给你一串长度不超过一百的字符串,里面包含10个字母分别是“p,q,r,s,t”代表0或1的数字,“K,A,N,C,E”表示操作,具体见问题给出的表格。问你无论字符串里面的数是什么,答案都输出1? 是输出“tautology”,不是输出“not”。 题解:此题就按前缀运算符那样,用栈处理下,暴力枚举下所有情况就好了。#include <cstdio>

2016-11-23 22:31:17 282

原创 【状态压缩枚举】poj 1753 Flip Game

poj 1753 Flip Game(状态压缩枚举) 题意:有一个4*4的棋盘,有白黑两种颜色的棋子,翻一次棋子,其颜色会改变并且其相邻的棋子颜色也会改变,问最少翻几次使得棋盘所有棋子颜色一样。 题解:状态压缩,将一种状态转变成一个数来表示,然后进行每个点的暴力dfs。#include <stdio.h>#include <string.h>#include <algorithm>#inc

2016-11-22 22:43:08 343

原创 【贪心】poj 1328 Radar Installation

poj 1328 Radar Installation(贪心)题意:x轴是无限长的一条海岸,x轴上方有很多小岛,需要安装雷达在海岸上,使雷达能扫到所有的小岛。给出小岛的坐标,和雷达扫描的半径,问最少需要多少雷达。题解:最优的方案把第一个点放在第一个雷达刚好能扫到的地方,就确定了放第一个雷达的最优位置,然后剩下第一个雷达没扫到的继续按这个方式找还需要的雷达的最优位置。那么我们需要把每个小岛在海岸的雷

2016-11-21 20:23:03 296

原创 二叉树的操作

1.二叉树的遍历 树的遍历是访问树的每个结点,且每个结点被访问一次。 分为四种方式:先序遍历,中序遍历,后序遍历,层序遍历。 代码实现: void InorderTraversal( BinTree BT ) { if(BT) { InorderTraversal(BT->Left); printf(” %c”,BT->Data);

2016-11-21 11:35:25 260

原创 二叉树的定义,储存和建立

一.定义 1.二叉树是一个有穷的结点集合。这个集合可以为空,若不为空,则他是由根结点和称为其左子树和右子树的两个不相交的二叉树组成。 2.完美二叉树是所有分支结点都存在左子树和右子树,并且所有叶子结点都在同一层上这样的二叉树。 3.完全二叉树是结点的编号和完美二叉树结点的编号相同(如果对树的结点从上至下,从左至右的顺序进行编号)。二.二叉树的储存结构: 1.顺序储存:只适用于不需要修改的完全

2016-11-19 18:35:42 885

原创 二分法查找(all way)

通过长时间的查询,不得不说自己总结才是最好的。 1.最基础的二分查找: 查找数组里是否有存在数值e。#include<bits/stdc++.h>using namespace std;int a[] = {1,1,2,3,3,3,5,6,7,11,13,24,25};int Bsearch(int l,int r,int e){ while(l <= r) //注

2016-11-15 22:23:30 517

原创 51nod 1099 任务执行顺序(贪心)

51nod 1099 任务执行顺序(贪心)使数组按照(o-r)大小来排序就好,在算第i个数的最大值时,前i-1个数决定了其初始值sum,那么将(o-r)越小的放在后面越优#include<bits/stdc++.h>using namespace std;const int N = 1e6+10;struct Node{ int o,r,c;}a[N];bool cmp(Node

2016-11-14 21:17:52 239

原创 【区间dp】HDU 2476 String painter

/*data: 2016/11/08writer: cn_swords题意:给你A,B两字符串,你一次操作可以将A一段全变为一个字符,问你最小次数把A变成B。题解:dp[l][r]代表区间(l,r)里,最小次数把这个区间的A变成B。当检查l位置A与B的时候,如果相同,dp[l][r] = dp[l+1][r];如果不同,初始化dp[l][r] = dp[l+1][r]+1,然后需要在

2016-11-08 21:25:19 319

原创 【区间dp】HDU 4283 You Are the One

/*data: 2016/11/08writer: cn_swords题意:有n个男按顺序排好,每个人都有一个值D[i],如果第i个人第k个上台找对象,那么该男的不开心值就会为(k-1)*D[i],小黑屋是个栈,上台顺序可以通过小黑屋改变,求最小不开心值;题解:dp[l][r]代表区间(l,r)里,最小的不开心值,dp[l][r],寻找一个k,让第l人第k个上场,使得dp[l][r]取得

2016-11-08 20:30:06 214

原创 【区间DP】POJ 1651 Multiplication Puzzle

POJ 1651 Multiplication Puzzle(区间DP)/*题意:给你n长度的序列,可以移除一个非首和尾的数,将数和左右两边的数相乘,要求移除完后和最小。题解:区间(l,r)可以取区间中间的k(代表区间最后取的数)枚举取最小,dp[l][r] = dp[l][k]+dp[k][r]+a[k]*a[l]*a[r];*/#include <cstdio>#include

2016-11-07 22:30:31 245

原创 51nod 1126 求递推序列的第N项(矩阵快速幂)

51nod 1126 求递推序列的第N项(矩阵快速幂)注意:将给出数mod处理即可。#include <bits/stdc++.h>using namespace std;struct Maxtri{ int p[2][2];};Maxtri multi(Maxtri a, Maxtri b){ Maxtri c; memset(c.p,0,sizeof(c.p));

2016-11-06 18:23:47 263

原创 【记忆化搜索区间dp】CodeForces 149D Coloring Brackets

/*date: 2016/11/5writer: CN_swords题意:给一个给定括号序列,给该括号上色,上色有三个要求1、只有三种上色方案,不上色,上红色,上蓝色2、每对括号必须只能给其中的一个上色3、相邻的两个不能上同色,可以都不上色问上色的方法数?题解:设: 0表示不上色;1表示上红色;2表示上蓝色。dp[i][j][x][y] 代表区间(i,j)上,i位置上x颜色,l位置

2016-11-05 20:44:05 260

原创 【区间dp】POJ 2955 Brackets

/*date: 2016/11/5writer: CN_swords题意:给你一个字符串,寻找最长的匹配串的长度。题解:定义:dp[i][j] 代表区间(i,j)最长匹配串的长度; 初始化: dp[i][j] = 0;对于dp[i][j],在(i+1,j)区间如果没找到与i匹配的字符,dp[i][j] = dp[i+1][j];在(i+1,j)区间如果找到与i匹配的字符,位置为k,那么

2016-11-05 11:53:22 205

原创 【区间dp】LightOJ 1422 Halloween Costumes

/*date: 2016/11/5writer: CN_swords题意:给你n天分别要穿的衣服,可以套着穿,但是一旦脱下来就不能再穿了,问这n天要准备几件衣服。题解:dp[i][j] 代表i天到j天最少需要准备的衣服;如果求dp[i][j],在(i+1,j)的区间内如果不考虑与i天一样的衣服,那么dp[i][j] = dp[i+1][j]+1;如果找到k天与i天一样,我们可以把i天的

2016-11-05 11:50:00 229

原创 【斯特林数】hdu 3625 Examining the Rooms

hdu 3625 Examining the Rooms(斯特林数)第一类斯特林数S(N,K) = (N-1)*S(N-1,K)+S(N-1,K-1)表示的正是N个元素形个K个非空循环排列的方法数。 那么1不能打破的情况下,N个元素形个K个非空循环排列的方法数是:S(N,K)-S(N-1,K-1) 枚举1到k层即可算出满足的方法数。#include <cstdio>#include <cstr

2016-11-04 22:18:39 343

原创 经典问题六.【二维的区间dp】棋盘分割 poj 1191

问题描述: 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。(每次切割都只能沿着棋盘格子的边进行) 思路: dp[i][x1][y1][x2][y2] 代表从(x1,y1)到(x2,y2)的矩形划分成i块的最优平方和 递推分四种情况: #include <cstdio>

2016-11-03 22:37:50 385

原创 均方差公式化简

均方差公式定义: 均方差公式化简: 可知:均方差公式化简后为: 均方差的平方 等于 每个数的平方和除n,再减去平均值的平方。 如果在平均值(即总和)确定情况下,平方和越小,均方差越小。

2016-11-03 21:31:14 18764

原创 经典问题五.【乘号两边有正负 区间dp】Polygon poj 1179

题目描述: 思路: 因为n并不大,所以很容易想到枚举一下第一步去掉的边。 然后展开应为符号和点交杂的一条线,如果符号只有‘+’,那么用区间dp求其最优解应该很简单啦,同样小区间推大区间,dp[i][j] = dp[i][k-1]+dp[k][j].现在考虑‘’,不能向‘+’一样简单的相乘就可以,因为如果两边是负数,那么两边最小才能使值最大,那么我们在过程最小值和最大值都需要记忆化,在‘’时

2016-11-02 21:37:16 363

原创 经典问题四. 【区间dp】 凸多边形最优三角形划分

(区间dp) 凸多边形最优三角形划分 问题描述: 思路: 将凸多边形的点数组化。发现三角形划分是满足区间叠加的。 dp[i][j],1<=i<=j<=N,代表凸子多边形{vi-1,vi,…,vj}的最优三角剖分所对应的权函数值,即其最优值。#include <cstdio>#include <cstring>#include <algorithm>using namespace std

2016-11-02 19:48:10 1623

原创 经典问题三.【环形区间dp】 项链 nyoj 460

问题描述: 思路: 在了解了一点区间dp的基础上,我们知道要从小区间最优化推导到大区间最优化。 那么这题也是一样:dp[i][j] 代表区间i,j最优释放的能量。 递推式:dp[i][j] = dp[i][k]+dp[k+1][j]+a[i]*a[j+1]*a[k+1]。 至于环形问题 :我们把数组扩大一倍,对2*n堆算出dp[i][j],结果枚举dp[i][i+n-1],取最大即可。

2016-11-01 21:22:35 455

原创 51nod 1024 矩阵中不重复的元素

51nod 1024 矩阵中不重复的元素题解:最开始想到的是用map存储,但是发现数字最大是100^100。难道要转换成字符串处理吗,其实我们发现指数,理应要想到取对数,再注意下精度问题就好了。#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;const lo

2016-11-01 18:44:17 237

空空如也

空空如也

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

TA关注的人

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