
动态规划
文章平均质量分 50
宴夜小丑
这个作者很懒,什么都没留下…
展开
-
算法基础(七):动态规划(二)
1、2、原创 2018-05-25 11:18:17 · 597 阅读 · 1 评论 -
POJ:1125 Stockbroker Grapevine
题目链接题意:每个股票经纪人与其他人有着联系时间,求与其他人联系的时间(最长联系的时间)最短的那个人及时间(最长联系时间)题解:如题,可以构造出有向图,找出所有节点对的最短路径,Floyd算法#include <stdio.h>#include <iostream>#include <cstring>#define max(a,b...原创 2018-08-11 19:06:30 · 190 阅读 · 0 评论 -
POJ:1050 To The Max
题目链接题意:N*N的矩阵,求出最大的子矩阵的和题解:最大子段和的扩展应用,最大子段和即求出一个序列中最大的连续子段的和,动态规划,dp[i]即以序列a[i]为结尾的子序列的和dp[i]=max(dp[i-1]+a[i],a[i])最大子矩阵求解,将最大子矩阵转变为一维的最大子段和,即对每一行i到行j求解以列和为序列的最大子段和0 -2 -7 09 2 -...原创 2018-08-11 15:31:39 · 240 阅读 · 0 评论 -
POJ:1018 Communication System
题目链接题意:每个系统由多个设备组成,每个设备由多个厂家可以提供,厂家提供不同的设备带宽和价格,选择厂家提供的设备,最后使得整个系统的总B(最小带宽)/总P(价格)最大题解:二维动态规划,前i个设备带宽为j时最小的价格dp[i][j]=min(dp[i][j],dp[i-1][k]+p))代码:#include <iostream>#include...原创 2018-08-11 10:37:53 · 224 阅读 · 0 评论 -
机试NOI:动态规划
2.6 基本算法之动态规划NOI:2988 计算字符串距离(递推):https://blog.youkuaiyun.com/wuzhenzi5193/article/details/80616930NOI:666 放苹果:https://blog.youkuaiyun.com/wuzhenzi5193/article/details/80327677NOI:8787 数的划分:https://blog.csd...原创 2018-06-08 10:56:09 · 399 阅读 · 0 评论 -
算法基础(六):动态规划(一)
1、原创 2018-05-24 22:49:45 · 406 阅读 · 0 评论 -
NOI:7625 三角形最佳路径问题
题目链接题解:动态规划,每个点的最大值等于下方或者右下的最大值注意:假如只有一行时,应该等于唯一的一个数#include <stdio.h>#include <iostream>#include <string>using namespace std;int a[105][105],b[105][105];int size;int set(int x...原创 2018-05-27 18:52:41 · 528 阅读 · 0 评论 -
NOI:2728 摘花生
题目链接题解:动态规划,每个点的最大花生数等于走东和走南两条路的最大花生数,终点的花生数就是她本身的花生数量,从终点依次往上推,就可以得出起始点的最大数量tmp(i,j)=result[i][j]=max(tmp(i,j+1),tmp(i+1,j))+orig[i][j];#include <stdio.h>#include <iostream>us...原创 2018-05-27 18:27:07 · 438 阅读 · 0 评论 -
NOI:3532 最长上升子序列和
题目链接题意:仿照最长上升子序列求解,以k为终点的最长上升子序列。不过在这里是求最长上升子序列的和,不是长度,所以以和判断大小#include <stdio.h>#include <iostream>using namespace std;int a[1005],b[1005];int n;int tmp(int k){ if(b[k]!=0)return...原创 2018-05-27 18:13:00 · 321 阅读 · 0 评论 -
NOI:8787 数的划分
题目链接题解:类似于分苹果,m个苹果n个盘子,分为三种情况,苹果==0||盘子==1,苹果大于等于盘子,苹果小于盘子#include <stdio.h>#include <iostream>#include <algorithm>#include <cmath>using namespace std;int n,k;int tmp[5];...原创 2018-05-27 18:04:09 · 539 阅读 · 0 评论 -
NOI:8758 装箱问题
题目链接题解:每个物品放与不放两种情况,注意物品可能没有空余地方放进去了#include <stdio.h>#include <iostream>using namespace std;int v,n;int a[35];int wigh[20005];int set(int k,int number){ if(number-a[k]<0)//这个...原创 2018-05-27 17:09:48 · 377 阅读 · 0 评论 -
NOI:1996 登山
题目链接:http://noi.openjudge.cn/ch0206/1996/题解:动态规划,两段最长上升序列,0-k以k结尾的最长上升序列和k-n以k为起点的上升序列两端和最大 掌握最长上升子序列的求法,即以ak为终点的最长上升子序列注意:题目中说一旦下山就不能再上山,所以要分成上山和下山两部分#include <stdio.h>#include <ios...原创 2018-05-27 16:52:56 · 897 阅读 · 0 评论 -
UVA:10118 Free Candies
题目链接题目大意: 有4堆糖果,每一堆有n个糖果,有一个篮子,这个篮子的最大容量为5块糖,每一次从这四堆中选择一堆,然后将最上面的糖果拿下来,放到篮子里面去,如果有相同两块糖的就把这;两块糖拿出来,如果达到了5块糖,并且这5块糖是两两不相同的就结束游戏,问你,最多能拿出多少对糖动态规划,状态为篮子里的糖果数,用k1 k2 k3 k4代表每堆糖的高度,即4维矩阵进行存储,代表此时糖堆的状态...转载 2018-05-27 14:44:53 · 295 阅读 · 0 评论 -
UVA:10285 Longest Run on a Snowboard
题目链接:https://vjudge.net/problem/UVA-10285题解:类似于百练1088滑雪,采用记忆性递归即可,比较经典的思路,一定要掌握!#include <stdio.h>#include <iostream>#include <string>using namespace std;int a[105][105],b[105][1...原创 2018-05-27 14:14:59 · 416 阅读 · 0 评论 -
POJ:3624 Charm Bracelet(背包问题)
题目链接:http://poj.org/problem?id=3624题解:动态规划,空间优化#include <stdio.h>#include <iostream>using namespace std;int w[3505],d[3505],f[13005];//重量,价值和最后计算结果//在这里计算结果只能用一行表示,不然会超空间int main(){ ...原创 2018-05-26 12:12:03 · 425 阅读 · 0 评论 -
POJ:1088 滑雪
题目链接题解:这道题关键在于使用记忆型的动态规划递归,如果不记忆会造成超时! 在遍历四个方向的时候可以使用如图的4行2列的数组注意:动态规划,每个点遍历四个方向找最大的路。//循环出四个方面的最长序列然后len[i][j]=max(len[上],下,左,右)+1;#include <iostream>#define N 101using na...原创 2018-05-26 11:10:08 · 1094 阅读 · 0 评论 -
百练:2755 神奇的口袋
题目链接:http://bailian.openjudge.cn/practice/2755/题解:动态规划递归:边界条件即体积等于v和第n件物品,状态转移方程为加上这个物品和不加上这个物品并转到下一个物品#include <stdio.h>#include <iostream>using namespace std;int n,v;int a[30];int s...原创 2018-05-25 23:56:23 · 839 阅读 · 0 评论 -
百练:2757 最长上升子序列
题目链接:http://bailian.openjudge.cn/practice/2757/思路:动态规划,子问题为以ak为尾的最长长度,取ak左边小于ak的最大子序列长度加1即可,注意,当左边没有比他小的时候,其值为1#include <stdio.h>#include <iostream>using namespace std;int a[1005],sum[1...原创 2018-05-25 11:48:05 · 212 阅读 · 0 评论 -
POJ:1143 Number Game
题意:两个人玩游戏,初始集合S为大于1的正整数集,轮流写出一个大于1的数然后将:“1、所有这个数的倍数;2、这个数的倍数与前面已经删去的数的和”从集合S中删去,现在告诉你S的现状,求所有必胜走法的第一步。题解:数的数量小于20,可以用位压缩dp,记录S中还剩哪些元素时是否是必胜态,然后通过记忆化搜索求出所有走第一步后是必败态的策略。 1 #include<cstdio> 2...转载 2018-08-11 19:29:15 · 319 阅读 · 0 评论