随笔分类 -  动态规划--------------------------

摘要:【算法】数位DP 【题解】动态规划 写了预处理函数却忘了调用是一种怎样的体验? #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int f[35][35]; void init() { f[0][ 阅读全文
posted @ 2017-04-13 17:03 ONION_CYC 阅读(275) 评论(0) 推荐(0)
摘要:【算法】(manacher+贪心)||(manacher+DP+树状数组/线段树) 【题解】 manacher求回文串,后得到线段,做一点计算映射回原串线段。 然后问题转化为可重叠区间线段覆盖问题,可以贪心解决。 排序左端点,同一左端点取最长段,然后在此段中找到右端点最靠右的线段,线性更新并累加。 阅读全文
posted @ 2017-04-05 21:19 ONION_CYC 阅读(375) 评论(0) 推荐(0)
摘要:【算法】区间DP 【题解】 注意先输出右括号后输出左括号。 f[i][i+x-1]=min(f[i][i+x-1],f[i][j]+f[j+1][i+x-1]+p[i]*p[j+1]*p[i+x]) x为当前区间长度,i为左端点,i+x-1为右端点,j为分割点。 矩阵Ai为Pi*Pi+1。 初始值f 阅读全文
posted @ 2017-03-09 14:08 ONION_CYC 阅读(200) 评论(0) 推荐(0)
摘要:【算法】最短路(floyd)+状态压缩型动态规划 【题解】 经典的TSP问题(货郎担问题):求最小权哈密顿回路(遍历全图点一次且仅一次)。本题稍作改动,先说原TSP问题解法:状压DP。 状态用二进制表示每个点是否走过(状态也包括最后走的点),状态转移关键在于每个点都有且只有另一个点指向它,所以先可以 阅读全文
posted @ 2017-03-05 13:52 ONION_CYC 阅读(396) 评论(0) 推荐(0)
摘要:原题目:悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 【算法】多重背包(有限背包) 动态规划 【题解】http://blog.csdn.net/acdreamers/article/details/8563283 优化:若物品数量(num[i])*物品重量(w[i])>背包容量(m),就相当于 阅读全文
posted @ 2017-02-15 18:48 ONION_CYC 阅读(526) 评论(0) 推荐(0)
摘要:【题意】将n划分成不同正整数的和的方案数。 【算法】动态规划 【题解】 暴力:f[i][j]:只用前1..i的数字,总和为j的方案数 本质上是01背包,前i个物体,总质量为j的方案数 f[i][j]=f[i-1][j]+f[i-1][j-i] 复杂度O(n^2) 优化: 我们发现,因为要求数字不同, 阅读全文
posted @ 2017-01-18 10:57 ONION_CYC 阅读(550) 评论(0) 推荐(0)
摘要:【算法】DP 【题解】f1[i]表示第i棵树当前高度能得到的最多果子数 f2[i]表示高度i能得到的最多果子数。 于是有: f1[j]=max(f1[j],f2[i+delta])+mp[j][i]; f2[i]=max(f2[i],f1[j]); 注意i+delta的范围。 #include<cs 阅读全文
posted @ 2017-01-03 13:48 ONION_CYC 阅读(204) 评论(0) 推荐(0)
摘要:【算法】DP+斜率优化 【题解】状态转移方程:f[i]=min(f[j]+g(i+1,j-1))+c[i] 关键在于如何O(1)计算g(i+1,j-1)。 推导过程:http://blog.csdn.net/PoPoQQQ/article/details/40504949 当d(j,k)中j<k且k 阅读全文
posted @ 2016-12-05 19:19 ONION_CYC 阅读(243) 评论(0) 推荐(0)
摘要:【动态规划杂记】状态+转移 参考:夜深人静写算法(二) - 动态规划 核心:划分阶段-状态表示-状态转移方程。 复杂度:状态数O(n^t),转移O(n^e),则称为tD/eD问题。 1.最优化问题和方案数问题常考虑DP,特定数问题不考虑DP。 2.断层思想:划分状态,从计算过的状态去答案,这就是无后 阅读全文
posted @ 2016-11-29 14:17 ONION_CYC 阅读(1937) 评论(0) 推荐(1)
摘要:【算法】状态压缩型DP 【题解】http://www.cnblogs.com/xtx1999/p/4620227.html (orz) https://www.cnblogs.com/zbtrs/p/6189240.html dp[i][j][k]为前i行已经放了j个国王并且第i行的状态为k(二进制 阅读全文
posted @ 2016-09-12 20:05 ONION_CYC 阅读(282) 评论(0) 推荐(0)
摘要:【算法】状态压缩型DP 【题解】 Q=tx+(t-1)y 对于Q≥t(t-1),x,y一定有解。 所以当两石子间距离long>t(t-1)时,令long=t(t-1),重新构造数组即可。 【注意】 1.输入的石子位置无序,要排序。 2.当s=t时特判。 3.最终解要在n~n+t中找最小值(不过数据太 阅读全文
posted @ 2016-09-12 12:55 ONION_CYC 阅读(375) 评论(0) 推荐(0)
摘要:【算法】动态规划+后缀表达式 【题解】 先把算式转为后缀表达式后进行DP 令f[s][0]表示使表达式答案为0的方案数 f[s][1]表示使表达式答案为1的方案数 (加法) f[a+b][1]=f[a][0]*f[b][1]+f[a][1]*f[b][0]+f[a][1]*f[b][1] f[a+b 阅读全文
posted @ 2016-08-13 20:23 ONION_CYC 阅读(1123) 评论(1) 推荐(1)
摘要:【算法】DP||贪心 【题解】 (1)动态规划: 令f[i][0..1]为两种条件下前i株花的最大保留数量,状态转移方程: f[i][0]=max(f[j][1]+1) (j=i-1...1)(h[i]>h[j]) f[i][1]=max(f[j][0]+1) (j=i-1...1)(h[i]<h[ 阅读全文
posted @ 2016-08-13 09:13 ONION_CYC 阅读(655) 评论(0) 推荐(0)
摘要:【算法】 【算法】网络流 【算法】树 【算法】数学 ————【专题】生成树计数(矩阵树定理) ————【专题】计数问题(排列组合,容斥原理,卡特兰数) ————【算法专题】卡特兰数(计数数列) ————【专题】数论 ————【专题】概率和期望 【算法】动态规划 【算法】数据结构 ————【专题】平衡 阅读全文
posted @ 2016-08-10 21:08 ONION_CYC 阅读(2144) 评论(0) 推荐(6)
摘要:Day1 T1(暴力):大水题 #include<cstdio> const int ok[5][5]={ 0,0,1,1,0, 1,0,0,1,0, 0,1,0,0,1, 0,0,1,0,1, 1,1,0,0,0, }; int a[210],b[210]; int main() { int n, 阅读全文
posted @ 2016-08-10 08:20 ONION_CYC 阅读(431) 评论(0) 推荐(2)