自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

liuyanfeier的专栏

小白进阶之路

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

原创 hdu1879 最小生成树模板 peim和kruskal

Problem Description省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。 Input测试输入包含若干测试用例。每个测试用例的第1行给出村

2015-12-28 16:16:06 321

原创 hdu1536 博弈模板

题意就是给出一个数组s。为每次可以取石子的数目。然后给你n堆石子每堆si。求解先手能不能赢!标准的sg函数用法题目。#include #include #include using namespace std;int s[101];//存放每次可以取得石子,即可以进行的步骤int sg[10001]; //每个石子堆的sg函数值int k; //每次可以取石子的

2015-12-27 15:43:18 317

原创 格雷码的输出

在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码例如当n为1的时候,格雷码为0,1;n为2的时候,格雷码为00,01,11,10;n为3的时候,格雷码为000,001,011,010,110,111,101,100;单纯从上面看,这样我们需要输入n的时候输出相应的格雷码应该怎么办?我们看上面的变换过程,假如我们知道了n-1时候的格雷码,怎么样求出n时候的

2015-12-21 16:53:54 1252

原创 求解二进制中1的个数

一:普通法int BitCount(unsigned int n){ unsigned int c =0 ; // 计数器 while (n >0) { if((n &1) ==1) // 当前位是1 ++c ; // 计数器加1 n >>=1 ; // 移位 } return c ;}这种

2015-12-20 20:31:22 430

原创 大楼扔鸡蛋问题 dp poj 3783

题意分析: 经典题,小白书上的一道例题,4+2出了这道原题,我愣是以为是数学题,最后也没做出来。题意是这样的,给你N个鸡蛋(硬度一样),让你测鸡蛋的硬度,测量的方法就是从某栋M层的楼的某一层X上把鸡蛋扔下来,如果鸡蛋碎了,代表他的强度小于X;如果没碎,则强度大于等于X。我们要做的就是不断的从楼上把鸡蛋扔下来,直到找到某一层楼X,从这一层楼扔下来鸡蛋不碎掉,从X+1层扔下来鸡蛋碎掉,那么鸡蛋的强度就

2015-12-20 19:40:33 1846

原创 poj 1141 (区间dp记录路径问题)

题意:括号匹配问题。问需要插入多少个括号是的所有的括号都正好可以匹配。输出其中长度最短的一个。分析:dp[i][j] 表示的是在区间(i,j)之间添加的最少的括号数,c[i][j] 记录断开的位置,没有断开的话记为-1。dp[i][i] = 1;当s[i]=='(' && s[j]==')' 或者 s[i]=='[' && s[j]==']'时,d[i][j]=d[i+1][j

2015-12-16 20:23:34 400

原创 POJ 2955 区间dp

题意:求括号匹配的最大长度思路:简单区间dp,令dp[i][j] 为 区间(i,j)之间的最大匹配长度。这样dp[i][j]  = max( dp[i][j] , dp[i][x] + dp[x+1][j] )  i不过dp[i][j] 得先初始化,为dp[i+1][j-1]  或者 dp[i+1][j-1]  +2 ;#include #include #includ

2015-12-16 17:06:36 331

原创 ZOJ 3537 区间dp

题意:给出一些点表示多边形蛋糕的定点的位置(如果蛋糕是凹多边形就不能切),切蛋糕时每次只能在顶点和顶点间切,每一次切蛋糕都有相应的代价,给出代价的公式,问把蛋糕切成多个三角形的最小代价是多少。由于有可能是凹多边形,所以得先判断凸性,直接求凸包,然后判断凸包顶点和所给点的大小,然后再解决最小代价。我们用dp[i][j]表示从i点到j点所构成的多边形的最优三角剖分,我们以j-i边为三角形的

2015-12-15 20:15:39 399

原创 POJ DP 百练1088 滑雪问题

Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子  1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 1

2015-12-14 19:45:34 1669 1

原创 POJ 2891 般模线性方程组

题意:给出k个模方程组:x mod ai = ri。求x的最小正值。如果不存在这样的x,那么输出-1.由于这道题目里面的ai、ri之间不满足两两互质的性质,所以不能用中国剩余定理直接求解。X mod m1=r1X mod m2=r2.........X mod mn=rn首先,我们看两个式子的情况X mod m1=r1…………………………………………

2015-12-07 17:11:21 395

原创 dp 最佳加法表达式

题意:有一个由1..9组成的数字串.问如果将m个加号插入到这个数字串中,在各种可能形成的表达式中,值最小的那个表达式的值是多少。分析:假定数字串长度是n,添完加号后,表达式的最后一个加号添加在第i 个数字后面,那么整个表达式的最小值,就等于在前i 个数字中插入m –1个加号所能形成的最小值,加上第i + 1到第n 个数字所组成的数的值(i从1开始算)。设V(m,n)表示在n个数

2015-12-06 16:03:26 2717 1

原创 DP 数字三角形(POJ1163)

73 88 1 02 7 4 44 5 2 6 5在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或右下走。只需要求出这个最大和即可,不必给出具体路径。三角形的行数大于1小于等于100,数字为0 -99“人人为我”递推型动归程序a(i,j) : 第i行第j个数字(i,j从1开始算)dp(i,j) :

2015-12-06 13:57:32 512

原创 Lucas hdu4349

题意:给出一个数字n,(1也就是C(n,i)%2==1的i的个数,其中(0解析:Lucas的应用,Lucas定理,见Lucas。根据Lucas有Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p) 我们可以写成二进制的形式观察,比如 n=1001101,m是从000000到1001101的枚举,我们知道在该定理中C(0,1)=0,因此如果n=

2015-12-03 17:25:55 363

原创 数论 Lucas定理 hdu3037

对于C(n, m) mod p。这里的n,m,p(p为素数)都很大的情况。就不能再用C(n, m) = C(n - 1,m) + C(n - 1, m - 1)的公式递推了。这里用到Lusac定理A、B是非负整数。AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。则组合数C(A,B)与C(a[n]

2015-12-03 16:04:01 412

原创 哥德巴赫猜想 POJ2909

题意:求出有多少对素数的和等于n(n>=4并且n为偶数)解析:先用素数筛选法求筛选出素数,然后直接扫描一遍就可以了。简单数论#include #include #include #include #include using namespace std;const int maxn = 100000;bool prime[maxn+10];void getpri

2015-12-03 15:18:25 349

原创 简单dp 最大连续子序列

//设n个元素的序列存储在数组A[1...n]中,求数组中连续子序列之和的最大值。#include #include #include #include #include using namespace std ;const int maxn = 100005 ;int n , ans ;int a[maxn] ;int dp[maxn] ;//dp[i] 前i个数字的

2015-12-02 21:31:09 480

原创 DP 【POJ1160】POST OFFICE 邮局问题

题意:在一个坐标轴上有n个村庄,每个村庄有一个坐标a[i],现在要在这n个村庄之间建立m个邮局,求每个村庄到距离它最近的邮局的距离之和。其中n【题目分析】:经典DP1、考虑在V个村庄中只建立【一个】邮局的情况,显然可以知道,将邮局建立在中间的那个村庄即可。也就是在a到b间建立一个邮局,若使消耗最小,则应该将邮局建立在(a+b)/2这个村庄上(可以通过画图知道)。

2015-12-02 20:39:55 1303

原创 dp 石子合并问题

石子合并问题:有n(N两堆价值之和,求最终将所有的石子合并成一堆之后的代价最小值。问题一:n堆石子排成一条直线这个问题比较简单,类似与矩阵连乘的问题。dp[n][m] 为合并n和m之间的石子的代价则有dp[i][j] = 0 , i==jdp[n][m] = min(dp[n][k]+dp[k+1][m]) + sum(n,m)  n#include

2015-12-02 19:07:57 502

原创 只是背着女友和别人热忱地相爱了,而已

我曾有过一段深刻的感情史,已从失恋的阴影中成长起来,近半年很享受单身的生活,也以为再少有人让我心动到不能自已,但是这个人就这么出现了,可是他却不是单身。  我们儿时相识,多年未见,这次家庭间的聚会又重逢。他长大了,帅了,也男子汉了,很绅士,也很体贴人,但对感情够单纯也够真诚。这种播种在儿时的好感很容易就让我对他敞开了心,两三天就确定自己对他的心意,这样的心动于我真的太难得了。而他虽然对

2015-12-01 20:37:16 843

原创 dpPOJ 2027 LCIS(最长上升公共子序列)

题意和解析见代码最后部分#include#include #include #include using namespace std;int a[505],b[505];int dp[505][505];int n,m;int path[505][505];int I,J,ans,res[505];int main(){ while(scanf("%d

2015-12-01 20:17:10 516

空空如也

空空如也

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

TA关注的人

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