随笔分类 - DP——区间
摘要:1 // 区间DP+next求循环节 uva 6876 2 // 题意:化简字符串 并表示出来 3 // 思路:dp[i][j]表示 i到j的最小长度 4 // 分成两部分 再求一个循环节 5 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #i...
阅读全文
摘要:1001 思路:首先把m个x分解成x*(m个1) 显然这样直接mod不行 又=((10^m-1)mod(k*9))/9 然后快速幂,同余运算 另一种做法是找循环节 1006 Gym Class 思路:先想一下,肯定是分数高的同学在前面先出来,怎样选择分数高的呢? 如果b不能出现先a的前面,我们可以建
阅读全文
摘要:题意:给出两个串a和b,一次只能将一个区间刷一次,问最少几次能让a=b 思路:首先考虑最坏的情况,就是先将一个空白字符串刷成b需要的次数,直接区间DP[i][j]表示i到j的最小次数。 再考虑把a变成b的次数 ans[i]:a从(0,i)变成b(0,i)所需的最小次数 初始化ans[i]=dp[0]
阅读全文
摘要:题意:有一个队列,每个人有一个愤怒值a[i],如果他是第k个上场,不开心指数就为(k-1)*a[i]。但是边上有一个小黑屋(其实就是个堆栈),可以一定程度上调整上场程序 思路:枚举区间和每个人第几个上场 dp[i][j]:[i,j]的最小分数 假设区间[i,j],第i个人第k个出场(1<=k<=j-
阅读全文
摘要:题意:有一家快餐店送外卖,现在同时有n个家庭打进电话订购,送货员得以V-1的速度一家一家的运送,但是每一个家庭都有一个不开心的值,每分钟都会增加一倍,值达到一定程度,该家庭将不会再订购外卖了,现在为了以后有更多的家庭订购,要将外卖送到的情况下使得所有用户的不开心值总和达到最小 思路:区间DP dp[
阅读全文
摘要:题意:在一个数字序列中, 取出不包括头和尾的所有数字, 每次取出一个数字的代价等于取出的这个数和左右两个数的乘积, 求总代价和最小的取法 此小到大递归
阅读全文
摘要:http://codeforces.com/problemset/problem/149/D 题意: 给一个给定括号序列,给该括号上色,上色有三个要求 1、只有三种上色方案,不上色,上红色,上蓝色 2、每对括号必须只能给其中的一个上色 3、相邻的两个不能上同色,可以都不上色 求0-len-1这一区间
阅读全文
摘要:输出一个串里面能匹配的括号数 状态转移方程: if(s[i]=='('&&s[j]==')'||s[i]=='['&&s[j]==']') dp[i][j]=dp[i+1][j-1]+2; 然后再区间合并
阅读全文
摘要:题意:切一个凸边行,如果不是凸包直接输出。然后输出最小代价的切割费用,把凸包都切割成三角形。 先判断是否是凸包,然后用三角形优化。 dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+w[i][k]+w[j][k]); w[i][j]代表i到j点的切割费用。 dp[i][
阅读全文
摘要:【动态规划】凸多边形最优三角剖分 枚举三角行,再递归三角形旁边的两个多边形。 【动态规划】凸多边形最优三角剖分 枚举三角行,再递归三角形旁边的两个多边形。
阅读全文
摘要:dp[i]][j]=min(dp[i+1][j]+1,dp[i+1][k-1]+dp[k][j]) 表示第i天到j的最小数量。如果第i天的衣服只自己穿的话,不考虑后面的就是dp[i][j]=dp[i+1][j]+1.否则就是dp[i][j]=dp[i+1][k-1]+dp[k][j],其中第k天的衣
阅读全文
摘要:石子合并(GarsiaWachs算法) 只能用该算法过!!! 详解看代码 1 //#pragma comment(linker, "/STACK:167772160")//手动扩栈~~~~hdu 用c++交 2 #include<cstdio> 3 #include<cstring> 4 #incl
阅读全文
摘要:状态转移方程在代码中标出 本题注意是圆形,所以之前要预先处理一下s数组。处理之后总长度为2*n-1.第一个合并的起点有n个,所以总的方案数是n 注释在代码中标出 http://www.rqnoj.cn/problem/490 石子合并问题推荐几篇很好的文章 http://blog.csdn.net/
阅读全文