自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GOODPLACE

fbi好啊

  • 博客(22)
  • 资源 (1)
  • 收藏
  • 关注

原创 dp练习题5 大盗阿福

题意:     求不相邻的几个数和最大。 思路:     我们可以用f[j]表示前j个数的最优解,可得动态转移方程f[j]=max(f[j-1],f[j-2]+a[j])。 代码: #include int f[100001],a[100001],t,n,ans; int max(int x,int y) {return x>y?x:y;} int main() { scanf("%d

2017-12-30 16:40:46 346

原创 dp练习题4 鸡蛋的硬度

题意:     一共有n层楼,如果鸡蛋的硬度为a,那么从>a的地方扔下来都会碎, 思路:     用f[i][j]表示i层楼有j个蛋的最优解,可以得动态转移方程,f[n][m]=min(f[n][m],1+max(dp(i-1,m-1),dp(n-i,m)))其中dp(i-1,m-1)表示鸡蛋碎了,往i以下的楼找,鸡蛋数量-1;dp(n-i,m)表示鸡蛋没碎,往i以上的楼层找。 代码:

2017-12-30 16:29:34 381

原创 dp练习题3 糖果

题意:     求一些糖果价值的最大值,并且要是k的倍数。 思路:     我们可以设f[i][j]表示前i个糖果的价值%k余j的最大值,可得动态转移方程f[i][(f[i-1][j]+a[i])%k=max(f[i][(f[i-1][j]+a[i])%k,f[i-1][j]+a[j]),f[n][0]即为解。 代码: #include int f[1001][1001],a[101],

2017-12-30 16:12:15 694

原创 dp练习题2 计算字符串距离

题意:     求几对字符的编辑距离,和http://blog.csdn.net/ssl_hzb/article/details/78880014差不多。 思路:     在基础版上加上循环就好了。。 代码: #include #include int f[2002][2002],x,m,n; char a[2002],b[2002]; int min(int x,int y) {ret

2017-12-30 15:34:20 325

原创 dp练习题1 公共子序列

题意:     求两个字符串中相等子序列的最大长度。 思路:     用f[i][j]表示a的第i个和b的第j个之间的最长子序列,可得动态转移方程:如果a[i-1]=b[j-1] f[i][j]=f[i-1][j-1]+1; 如果a[i-1]不等于b[j-1] f[i][j]=max(f[i-1][j],f[i][j-1]) 代码: #include #include int f[1

2017-12-30 15:26:52 256

原创 SSL_1202 滑雪

题意:     求一个矩阵中最长的最长下降长度。例:1 2 3 4 5 6 7 8 9 中最长下降的长度是5,就是9-8-7-4-1或9-6-3-2-1或9-8-5-2-1 思路:     用记忆化搜索保存到达每一个点的最长下降长度。 代码: #include int t,ans,m,n,a[501][501],f[501][501],dx[5]={0,1,-1,0,0}

2017-12-23 15:29:05 212

原创 洛谷_2758 编辑距离

题意:     求一个字符串变成另一个字符串的最少编辑次数。 思路:     用f[i][j]记录ai到bj的最短编辑距离,可以得出动态转移方程: 当a[i]=b[j]时,f[i][j]=f[i-1][j-1];否则f[i][j]=min(f[i-1][j-1]+1,f[i][j-1]+1,f[i-1][j]+1, 其中f[i-1][j-1]+1代表把a[i]改为b[j],f[i][j-

2017-12-23 15:05:14 277

原创 SSL_1010 方格取数

Description   设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。如下图所示(见样例):   某人从图的左上角的A 点出发,可以向下行走,也可以向右走,直到到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。   此人从A点到B 点共走两次,试找出2条这样的路径,使得取得

2017-12-23 14:47:12 284

原创 SSL_1597 石子合并问题

Description   在一个圆形操场的四周摆放着n 堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。 编程任务:   对于给定n堆石子,编程计算合并成一堆的最小得分和最大得分。 Input 输入包括多组测试数据,每组测试数据

2017-12-16 11:26:35 290

原创 SSL_2863 合并石子

Description 在一个操场上一排地摆放着N堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。请设计一个程序,计算出将N堆石子合并成一堆的最小得分。 Input 每组数据第1行为一个正整数N(2 思路:     用s[i]表示前i堆石子的重量总和,f[i][j]表示把第i堆合到第j堆的最优值,可得动态转

2017-12-16 09:30:07 312

原创 SSL_2295 暗黑破坏神

题意:     就是多重背包,要记录路径。 思路:     可以用一个数组记录路径,最后递归回去。 代码: #include int x,y,max1,n,m,p[501],c[501],w[501][51],f[501][501],b[501][501]; void print(int x,int y) { if (x==0) return; print(x-1,y-b[x][y]

2017-12-16 09:25:50 399

原创 SSL_1595 加法最大

题意:     和上一题差不多,就是符号改了一下,见http://blog.csdn.net/ssl_hzb/article/details/78817977。 思路:     这题可以用动态规划,设f[i][k]为在前i位插入k个符号的最优解,a[j][i]表示字符串第j位到第i位组成的数字,可得动态转移方程:f[i][k]=max(f[i][k],f[j][k-1]+a[j+1][i])

2017-12-16 08:51:50 237

原创 SSL_1007 乘积最大

题意:     给出一个长度为n的字符串,求在其中插入k1个乘号使结果最大。 思路:     这题可以用动态规划,设f[i][k]为在前i位插入k个符号的最优解,a[j][i]表示字符串第j位到第i位组成的数字,可得动态转移方程:f[i][k]=max(f[i][k],f[j][k-1]*a[j+1][i])。 代码: #include long long a[11][11],f[11]

2017-12-16 07:36:54 222

原创 SSL_2289 庆功会

Description 为了庆贺班级在校运动会上取得第一名的成绩,班主任决定开一场庆功会,为此拔款购买奖品奖励运动员,期望拔款金额能购买最大价值的奖品,可以补充他们的精力和体力。 Input 第一行二个数n(n<=500),m(m<=5000),其中n代表希望购买的物品的种数,m表示班会拨的钱数。 接下来n行,每行3个数,v、w、s,分别表示第I种物品的价格、价值(价格 与 价

2017-12-13 21:17:02 272

原创 SSL_2301 混合背包

Description     背包体积为V ,给出N个物品,每个物品占用体积为Vi,价值为Wi,每个物品要么至多取1件,要么至多取mi件(mi > 1) , 要么数量无限 , 在所装物品总体积不超过V的前提下所装物品的价值的和的最大值是多少? Input     第一行两个数V,N下面N行每行三个数Vi,Wi,Mi表示每个物品的体积,价值与数量,Mi=1表示至多取一件,Mi>1表示至多取M

2017-12-13 21:10:00 279

原创 SSL_2293 暗黑游戏

题意:     混合背包。 思路:     判断数量,如果是0就按照完全背包的去做。 代码: #include int p,r,n,w1[1001],w[1001],c[1001],s[1001],f[1001][1001]; int max(int x,int y) { return x>y?x:y; } int main() { scanf("%d%d%d",&n,&p,&r);

2017-12-13 20:52:47 651

原创 SSL_1236 逃亡的准备

题意:     这题目就是一个多重背包。 思路:     动态转移方程:f[j]=max(f[j],f[j-k*v[i]]+k*w[i])。 代码: #include using namespace std; int n,m,f[2001],s[2001],v[2001],w[2001]; int max(int x,int y) { return x>y?x:y; } int mai

2017-12-13 15:57:07 354

原创 SSL_1197 质数和分解

题意:      求一个质数可以分解成几个质数的和的方案数。 思路:     这题可以用完全背包,动态转移方程是 f[j]=f[j]+f[j-prime[i]]。 代码:     #include using namespace std; int n1,n,f[201]; int prime[47]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,

2017-12-13 15:48:09 456

原创 SSL_2278 Oliver的救援

题意:      从矩阵上的一个地方走到另一个地方,0表示路通,1表示走不通,求最少步数。 思路:      用广搜,深搜也可以。 代码: #include int n,a[1100][1100],state[1111000][3],x,y,px,py,best; short dx[5]={0,1,0,-1,0},dy[5]={0,0,1,0,-1}; char c; bool chec

2017-12-09 09:37:23 320

原创 SSL_2324 细胞问题

题意:     求一个矩阵里面有几个板块。 思路:      用广搜。搜到一个就清除周边连接的板块,然后统计个数。 代码: #include using namespace std; int ans,n,m,state[600][3]; char c; short dx[4]={1,-1,0,0},dy[4]={0,0,-1,1}; bool a[61][61]; void bf

2017-12-09 09:29:22 267

原创 SSL_2325 最小转弯问题

题目:         给出一张地图,这张地图被分为 n×m(n,m 思路:         用广搜,之后回溯统计转弯次数。 代码: #include int b,f,m,n,a[101][101],state[11000][3],s,father[11000],x,y,px,py,best; short dx[5]={0,1,0,-1,0},dy[5]={0,0,1,0,-1};

2017-12-08 21:16:19 379 1

原创 SSL_1194 最优乘车

题目:        H城是一个旅游胜地,每年都有成千上万的人前来观光。为方便游客,巴士公司在各个旅游景点及宾馆,饭店等地都设置了巴士站并开通了一些单程巴上线路。每条单程巴士线路从某个巴士站出发,依次途经若干个巴士站,最终到达终点巴士站。   一名旅客最近到H城旅游,他很想去S公园游玩,但如果从他所在的饭店没有一路已士可以直接到达S公园,则他可能要先乘某一路巴士坐几站,再下来换乘同一站台的另一

2017-12-07 15:46:53 354

最小生成树

这个文档讲述了最小生成树的相关知识,有兴趣的同学可以拿来学习

2018-01-13

空空如也

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

TA关注的人

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