随笔分类 - 动态规划
摘要:链接: https://nanti.jisuanke.com/t/17412 题意: 给你n张扑克,问你最少移动多少次使得排列好 排列好是指同种花色在一起,并且递增或者递减 题解: 生成所有排列好的数列,然后求lcs 代码:
        阅读全文
                
摘要:链接: http://codeforces.com/contest/833/problem/B 题意: 给你n个数,分成k段,每段的值为其中不同的数的个数,求每段的值的和的最大值 题解: 显然需要用到动态规划。我们用dp[i][j]表示前j个数分成i段价值和的最大值。容易得到状态转移方程为 dp[i
        阅读全文
                
摘要:链接: http://codeforces.com/contest/463/problem/D 题意: 给出k个排列,问这k个排列的最长公共子序列的长度。 题解: 首先cnt记录的是i在j的前面有多少个,因为是k的排列的公共子序列,所以只有当cnt[i][j]==k的时候才会考虑 然后就是求这么多组
        阅读全文
                
摘要:链接: http://codeforces.com/contest/375/problem/B 题意: 给出一个01矩阵,行与行之间可以互换位置,问能够得到最大的全1矩阵的面积。 题解: 定义dp[i][j]表示从i开始长度为j的有多少个 然后再求一下后缀,即dp[i][j]表示从i开始长度大于等于
        阅读全文
                
摘要:链接: http://codeforces.com/problemset/problem/506/A 题意: 给出30000个岛,有n个宝石分布在上面,第一步到d位置,每次走的距离与上一步的差距不大于1,问走完一路最多捡到多少块宝石。 题解: 容易想到DP,dp[i][j]表示到达 i 处,现在步长
        阅读全文
                
摘要:链接: http://codeforces.com/contest/256/problem/A 题意: 给出一个序列,求最长的子序列,满足隔位的两个数相等,问这个最长的子序列的长度是多少。 题解: 先把b数组离散化一下,dp[i][j]就表示当前循环节是i,j的最大值 代码:
        阅读全文
                
摘要:链接: http://codeforces.com/contest/191/problem/A 题意: 给出n个字符串,两个字符串如果前一个的尾与后一个的首相同,那么可以相连,最后得到的字符串要满足首尾相同,问最长的符合要求的字符串的长度是多少。 字符串必须按给出顺序相连 题解: 定义状态dp[i]
        阅读全文
                
摘要:链接: http://codeforces.com/problemset/problem/478/D 题意: 给出r个红砖,g个绿砖,问有多少种方法搭成最高的塔。 题解: 举红色球的层数,当第i层为红色是,i层上面有[0,r]个 红色的,可推出dp[i+j]=dp[i+j]+dp[j],最后 再统计
        阅读全文
                
摘要:链接: http://codeforces.com/contest/459/problem/E 题意: 给出n个点,m条边的有向图,每个边有边权,求一条最长的边权上升的路径的长度。 题解: 定义dp[i]表示第i条边结尾的情况下的最长路径。 定义g[i]表示点i结尾的情况的最长路径。 对所有的边进行
        阅读全文
                
摘要:链接: http://codeforces.com/contest/358/problem/D 题意: 给出n个数,每个数取走的贡献与相邻的数有关,如果取这个数的时候,左右的数都还没被取,那么权值为a,如果左右两个数有一个被取走了,那么权值为b,如果左右两个数都被取走了,那么权值为c,求取取走全部数
        阅读全文
                
摘要:链接: http://codeforces.com/contest/582/problem/B 题意: 给你一个长度为n的序列,复制T次,求最长不下降子序列 题解: n最大为100,所以我们可以计算出n*n的最长不下降子序列长度,如果T>n, 我们会发现中间一定会有重复的,重复的就是a数组中出现次数
        阅读全文
                
摘要:链接: http://codeforces.com/contest/426/problem/E 题意: 两组数字a和b 如果a[i]等于b[j] 则可将a[i]和b[j]前所有数字删掉 这种操作花费e体力 得到1元钱 或者一次删掉所有数字 这种操作花费等于曾经删除的所有数字个数 做完后得到所有钱 一
        阅读全文
                
摘要:链接: http://codeforces.com/contest/479/problem/E 题意: 有一个电梯一共n层,你现在在a层,不能去b层,现在你会进行k次移动 每次移动可以从x移动到y x,y满足x - y| < |x - b| ,问你一共有多少种不同的操作 题解: 动态规划 dp[st
        阅读全文
                
摘要:链接: http://acm.hdu.edu.cn/showproblem.php?pid=6024 题意: 有一排教室位置xi,每个教室可以建一个蛋糕店,花费为ci,对于每一个位置,如果建了蛋糕店,那么花费ci,否则找到他左边第一个建蛋糕店的教室,花费为他们之间的距离 所以就是说最左边的教室一定要
        阅读全文
                
摘要:Posterize Posterize Posterize Pixels in a digital picture can be represented with three integers in the range 00 to 255255 that indicate the intensity
        阅读全文
                
摘要:链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=16 题意: 中文题就不说题意了 题解: 两种解法,第一种是如果宽>长的话就交换一下 然后排序 LIS 第二种解法是不用交换,直接建图,dfs, 代码:
        阅读全文
                
摘要:链接: http://poj.org/problem?id=2479 题意: 求两个不相交的最大字段和 题解: 对于每个i来说,找出0~i-1的最大字段和和i~n-1的最大字段和,在加起来求最大值 代码:
        阅读全文
                
摘要:链接: http://poj.org/problem?id=3666 题意: 给你一个序列,求使它变成非递增或者非递减所需的最少花费 把a变成b的花费为|a-b| 题解: 事先知道了测试数据都是非递减的,所以就只写了非递减的,其实求非递增在反一下算一遍取最小值就行了 dp[i][j]表示第i个数以不
        阅读全文
                
摘要:D. Travel Card 链接: http://codeforces.com/contest/760/problem/D 题意: 乘坐电车,一共会有n次乘坐,之后n行会一次给出每次乘坐的时间。问你最少花的钱是多少。每次输出应该支付的钱。 题解: 用dp[n]表示第n次旅行一共所要花费的最小钱数。
        阅读全文
                
摘要:C. Journey 链接: http://codeforces.com/contest/721/problem/C 题意: 给你一个n点m边的图,让你从1走到n,找到一条经过尽量多点的路径,且路径边权和小于等于T 然后输出路径。 题解: 直接DP,DP[i][j]表示在i点,当前经过了j个点的最小
        阅读全文
                

浙公网安备 33010602011771号