摘要:
【题目链接】 点击打开链接 【算法】 只要第一行第一个数确定了,后面的数也都确定了 递推两遍即可 【代码】 阅读全文
摘要:
【题目链接】 点击打开链接 【算法】 f[i][j]表示第i段到第j段,最少需要多少次全部消除 那么,当color[i] = color[j]时 : 若s[i] + s[j] > 2,根据题目中所说的“连锁反应”,很容易得到f[i][j] = f[i+1][j-1] 若s[i] + s[j] = 2 阅读全文
摘要:
【题目链接】 点击打开链接 【算法】 先考虑50分的做法 : f[i]表示以i结尾的本质不同的上升子序列的个数 则f[i] = sigma(f[j]) (j < i,a[j] < a[i]),注意如果a[j]不止一个,只需加上下标最大的即可,否则会重复计数 那么,100分的做法,其实就是用树状数组来 阅读全文
摘要:
【题目链接】 点击打开链接 【算法】 题目描述比较繁琐,但细心观察后,发现其实就是用kruskal算法求最小生成树 【代码】 阅读全文
摘要:
【题目链接】 点击打开链接 【算法】 动态规划 我们发现,M只有两种取值,1和2,那么,只需分类讨论即可 当M = 1时,其实这个问题就成了就最大连续子段和的问题,只不过要选K段而已 用f[i][j]表示选到第i行,选了j段,那么,显然有 : f[i][j] = max{f[i-1][j],f[k] 阅读全文
摘要:
【题目链接】 点击打开链接 【算法】 弗洛伊德求最小环模板 我们知道,在一个环上,一定有一个有且仅有一个编号最大的点,设这个点为k,起点为i,终点为j,那么 mincost = dist[i][j] + cost[j][k] + cost[k][i] (dist[i][j]为i到j的最短路) 所以只 阅读全文
摘要:
【题目链接】 点击打开链接 【算法】 和HDU2167类似 先搜出一行内符合的状态,然后,f[i][j][k]表示第i行,第j种状态,放了k个,合法的方案,DP即可 【代码】 阅读全文
摘要:
【题目链接】 点击打开链接 【算法】 状压DP 先搜出一行符合的情况,然后,f[i][j]表示第i行,状态为j,能够取得的最大值,DP即可 【代码】 阅读全文
摘要:
【题目链接】 点击打开链接 【算法】 动态规划 f[i][j][x][y]表示当前选了i个男生,j个女生,男生与女生差最大为x,女生与男生差最大为y的方案数 转移很显然,笔者不再赘述 【代码】 阅读全文
摘要:
【题目链接】 点击打开链接 【算法】 此题是一道好题! 首先,我们发现 : 付款方法数 = 不受限制的方法数 - 受限制的方法数 那么,我们怎么求呢? 我们用dp求出不受限制的方法数(f[i]表示买i元的东西,不受硬币限制,有多少种方案),只需用01背包的 方法就可以了,实现非常简单 那么受限制的方 阅读全文