随笔分类 - 动态规划
摘要:算法实验题 4.5 括号问题 ★问题描述 已知一个由 n 对括号组成的长度为 2n 的括号序列(任何一个左括号都从内到外与右边 距离最近的一个右括号相匹配),现在假设该序列被打乱了。阿菜只记得序列中所有左括号 的相对顺序和每一对括号中左括号和右括号的距离范围为[Li, Ri](1题解:我们定义一个完
阅读全文
摘要:这题的题意是 在双脚天平上有N块东西,依次从上面取走一些,最后使得这个天平保持平衡! 解题: 逆着来依次放入,如果可行那就可以,记得得有木板自身的重量。 /************************************************************************
阅读全文
摘要:提交题意:给了n*m的网格,然后有p个重型的防御塔,能承受1次攻击,q个轻型防御塔不能接受任何攻击,然后每个防御搭会攻击他所在的行和所在的列,最后求在这个网格上放至少一个防御塔的方案数,我们枚举 选取多少个重型防御塔然后这个重型防御塔有多少是两个在一行,和两个在一列 O(P^3)的效率#includ...
阅读全文
摘要:题意:给了一个矩阵图,要求使用回路把图中的树全部吃掉的方案树,没有树的点不能走,吃完了这个点也就没有了,走到哪吃到哪用插头dp搞#include #include #include #include #include using namespace std;typedef long long LL;...
阅读全文
摘要:#include #include #include #include #include using namespace std;const int INF=100000000;int nrows,ncols;int G[10][10];struct State{ int up[9]; in...
阅读全文
摘要:题意: 给了一个n,k,s,和一个数组,求使用小于s次的交换使得前k个整数的和尽可能的小,交换指的的是相邻的两个数交换,首先考虑 如果最小的k个数全部再最后面,那么至少要花费( n - k + 1 + n)*k/2 - (( k + 1 ) * k / 2) 这么多下才能把这k个数搬运到最前面,也就...
阅读全文
摘要:题意: 给了一个图 从1号节点走到N号节点,然后,每个地方有买卖盐的差价,然后求 到达N的最大价值,一旦走到N这个点就不能再走了,或者走到不能再别的世界走1和N这两个点,然后接下来用一个 四维的数组记录状态,因为时间是递增的 也就是说不会出现循环,我们每次选取最小的时间来做,这样可以避免很多不必要的...
阅读全文
摘要:#include #include #include #include #include using namespace std;bool use[10) dp[D]=max(dp[D^(1<<j)]+num,dp[D]); else{ ...
阅读全文
摘要:2015-10-0619:31:05n个有标号的球围成一个圈。每个球有两种颜色可以选择黑或白染色。问有多少种方案使得没有出现连续白球7个或连续黑球7个。每组包含n,表示球的个数。(1 #include #include #include using namespace std;const int m...
阅读全文
摘要:E. Gerald and Giant Chesstime limit per test2 secondsmemory limit per test256 megabytes2015-09-09inputstandard inputoutputstandard outputGiant chess i...
阅读全文
摘要:题意是给了 n 个点的树,会有m条链条 链接两个点,计算出他们没有公共点的最大价值, 公共点时这样计算的只要在他们 lca 这条链上有公共点的就说明他们相交dp[i]为这个点包含的子树所能得到的最大价值sum[i]表示这个点没有选择经过i这个点链条的总价值两种选择这个点没有被选择 dp[i]=...
阅读全文
摘要:题意 给了n个点的数 每个点有一个w[i]权值,如果你选择了i这个点那么距离i这个点距离为w[i]的点将被除去,最后问 选则尽量少的点把这n个点全部删除1#include #include #include #include using namespace std;const int maxn =1...
阅读全文
摘要:D题说的是 你选定一个区间如[l r] 将这个区间内的每个数都加上1,然后求将这整个整个序列都变成h的方案数有多少种 没有一个位置会有超过1次方[ 或者放 ]考虑当前位置放的是什么 有5种- 不放[ 右开区间] 左开区间[] 自己一个区间][ 开始一个区间关闭一个区间dp[i][open] 表示第i...
阅读全文
摘要:题意 给了一个n*m的网格 然后一台挖掘机从(0,0) 这个位置出发,收集完全部的石头回到(0,0)挖掘机可以有无限的载重用旅行商处理 dp[k][i] 表示在这个集合中最后到达i的最小距离,用集合上的dp, dp[S|(1#include #include #include #include us...
阅读全文
摘要:hdu5125 他说的是n个人每个人都有两个气球a,b,气球各自都有相应的体积,现在让他们按照序号排列好来,对他们的a气球体积值计算最长上升子序列,对于这整个排列来说有m次机会让你将a气球替换成b气球(允许不使用完),问最后的最长上升子序列的长度是多少,哈哈,当然用dp的思想我们很容易就能知道状态的...
阅读全文
摘要:这题说的是给了n道题每道题用时ti分钟,需要在Li 时间或者之后完成,得分为vi, 我们 首先必须要能过完成,尽量让L-t小的放在前面。然后采用背包去做#include #include #include #include #include using namespace std;const int...
阅读全文
摘要:n#include #include#include using namespace std;int dp[605][605],L[605],R[605];int get[605][605];int dfs(int l, int r){ if(dp[l][r]!=0) return dp[l][...
阅读全文
摘要:这题 to[i][j] 为第i个人送j这个礼物的概率 我们用13进制进行压缩这个留下的的礼物的个数,这样我们将dp[i][k]表示为当第i个人放完礼物后得到的状态为k时的概率,那么通过记忆化搜索我们就得到了我们想要的状态概率即 dp[i][k]+={dp[i+1][k-aj]*to[i][aj]},...
阅读全文
摘要:题意 给 了 一 个 矩 阵 然 后 , 潜 艇 可 以 向 前 在 西北和东北之间 的区域, 然后每个潜艇有一个值D ,当到达潜艇距离为D的倍数的时候可以得到这个价值,这样我们1000*1000 的矩阵,D#include #include #include #include #include u...
阅读全文
摘要:这题说的是给了一个二进制数R , 计算出 在[0,R) 区间内的数, 二进制中有n个1 个和n#include #include #include using namespace std;const int maxn =1005;typedef long long ll;const ll mod=1...
阅读全文

浙公网安备 33010602011771号