摘要: 【算法】动态规划 【题解】 万物皆动规,每时每刻都要想着DP!特别是这种明显可以序列递推的题目。 一个简单的思路是f[i]表示前i个选择合法方案(第i个可选可不选)的最大效率 f[i]=max(f[i-1],f[j-2]+sum[j~i]),j=i-k+1~i。 然后就可以把f[j]-sum[j+1 阅读全文
posted @ 2017-08-30 19:40 ONION_CYC 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 【算法】树型DP||树的重心(贪心) 【题解】 两遍DFS,第一次得到所有节点子树的路径和,第二次给出除了该子树外其它部分的路径和,时时计算答案。 long long!!! #include<cstdio> #include<cstring> #include<algorithm> #include 阅读全文
posted @ 2017-08-30 18:29 ONION_CYC 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 【算法】DP 【题解】 如果每个排列算一种,则令f[i]表示凑成面值为i的方案数,容易推出f[i]+=f[i-a[j]]。 现在是每个组合才算一种,令f[i][j]第二维表示只使用前j种面值,f[i][j]+=f[i-a[j][k],k=0~j,这样最终算出来的方案就是按一定顺序的,不会重复计算。 阅读全文
posted @ 2017-08-30 16:21 ONION_CYC 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 【算法】01分数规划-最优比率环 【题意】给定有向图,点有收益,边有代价,重复经过的话收益不叠加而代价叠加,求从任意点开始最后回归该点的(收益/代价)最大。 【题解】 和普通的分数规划不同,这里的方案选择必须是一个环。首先有一个重要的结论:答案一定是一个简单环。 (简单证明:假设当前复杂环为两个简单 阅读全文
posted @ 2017-08-30 14:22 ONION_CYC 阅读(323) 评论(0) 推荐(1) 编辑
摘要: 【算法】状压DP 【题解】对于上一行的每个状态,每行进行DFS。 #include<cstdio> #include<algorithm> #include<cstring> #define ll long long using namespace std; const int maxn=20,ma 阅读全文
posted @ 2017-08-30 10:14 ONION_CYC 阅读(236) 评论(0) 推荐(0) 编辑