随笔分类 - 动态规划
摘要:题目链接:http://codeforces.com/problemset/problem/478/D 题意: 给你r个红方块和g个绿方块,让你用这些方块堆一个塔。 最高层有1个方块,每往下一层块数+1,同时要保证每层中的方块都是同一种颜色。 如图: 问你在塔的高度最高的前提下,堆出塔的方案数。 题
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/219/D 题意: 给你一棵树,n个节点。 树上的边都是有向边,并且不一定是从父亲指向儿子的。 你可以任意翻转一些边的方向。 现在让你找一个节点,使得从这个节点出发能够到达其他所有节点,并保证翻转边的数量最小
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/448/C 题意: 有n个木板竖着插成一排栅栏,第i块木板高度为a[i]。 你现在要将栅栏上所有地方刷上油漆。 每次你可以选择竖着刷或横着刷,但必须保证一次刷的地方不能间断。 问你至少要刷几次才能刷满。 题解
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/479/E 题意: 有一栋n层的房子。 还有一个无聊的人在玩电梯,每次玩电梯都会从某一层坐到另外一层。 他初始在a层,然后要玩k次电梯。 这栋楼里还有一个神秘实验室,在b层。 这让他每次坐电梯受到了限制: 当
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/463/D 题意: 给你k个1到n的排列,问你它们的LCS(最长公共子序列)是多长。 题解: 因为都是1到n的排列,即每个串中,1到n每个数字恰好出现一次。 将相同的数字之间相连,可以得到下面的样子(n =
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/455/B 题意: 给你n个字符串,然后进行k局游戏。 每局游戏开始有一个空串,然后双方轮流给这个串的末尾添加字符,并保证新字符串是n个字符串中至少一个串的前缀。 当一方不能添加字符时,这一方输,游戏结束。
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/294/B 题意: 有n本书,每本书的厚度为t[i],宽度为w[i] (1<=t[i]<=2, 1<=w[i]<=100)。 然后让你将所有书按照下面的方式摆放: 在下面放一本书会占用下面t[i]的长度。 在
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/372/B 题意: 给你一个n*m的01矩阵(1 <= n,m <= 40)。 然后有t组询问(a,b,c,d),问你: 在以(a,b)为左上角,以(c,d)为左下角,围成的矩形范围中,有多少全是0的矩形。
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/571/B 题意: 给你一个长度为n的数列a[i]。 现在你可以随意改变数字的位置,问你 ∑| a[i] - a[i+k] | 的最小值(1 <= i <= n-k)。 题解: 将a[i]拆成若干个子序列s[
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/509/F 题意: 告诉你遍历一棵树的方法,以及遍历节点的顺序a[i],长度为n。 问你这棵树有多少种可能的形态。 遍历方法: used[1 ... n] = {0, ..., 0}; procedure d
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/245/H 题意: 给你一个字符串s。 然后有t个询问,每个询问给出x,y,问你区间[x,y]中的回文子串的个数。 题解: 表示状态: dp[x][y] = numbers 表示区间[x,y]中的回文子串个数
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/351/B 题意: 给你一个1到n的排列a[i]。 Jeff和Furik轮流操作,Jeff先手。 Jeff每次会交换a[i]>a[i+1]的两个数。 Furik每次有1/2的概率交换a[i]<a[i+1]的两
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/505/C 题意: 有n个宝石,分别在位置p[i]。(1 <= n,p[i] <= 30000) 初始时你在位置0,第一次走可以往前跳d的距离。 从第二次跳开始,如果前一次跳的距离是x,这一次跳的距离只能是x
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/429/B 题意: 给你一个n*m的网格,每个格子上有一个数字a[i][j]。 一个人从左上角走到右下角,一个人从左下角走到右上角,要求两条路径有且仅有一个交点。 问你除去交点格子上的数字,路径上数字之和最大
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/432/D 题意: 给你一个字符串s,让你找出所有既是前缀又是后缀的子串,并输出它们分别出现了多少次。 题解: 先对原串求一次nex数组。 然后枚举位置i: sub(k)表示前缀s[0 to k] dp[i]
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/366/C 题意: 有n个物品,每个物品有两个属性a[i]和b[i]。 给定k,让你选出一些物品,使得 ∑ a[i] / ∑ b[i] = k。 问你选出物品的 ∑ a[i]最大是多少。 题解: 将原式变形:
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/180/C 题意: 给你一个字符串s,长度为n。 让你将这个字符串变成“前面一段都是大写字母,后面一段都是小写字母”的形式。 (也可以全是大写或全是小写) 问你最少改动几个字符。 题解: 表示状态: dp[i
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/459/E 题意: 给你一个有向图,每条边有边权。 让你找出一条路径,使得这条路径上的边权严格递增。 问你这样的路径最长有多长。 题解: 先将所有边按边权从小到大排序,以保证边权递增。 表示状态: dp[i]
阅读全文
摘要:题目链接:http://codeforces.com/problemset/problem/163/A 题意: 给你两个字符串a,b,问你有多少对"(a的子串,b的子序列)"可以匹配。 题解: 表示状态: dp[i][j] = pairs a的子串以a[i]结尾,b的子序列以b[1 to j]结尾的
阅读全文
摘要:题目链接:http://codeforces.com/contest/909/problem/C 题意: Python是没有大括号来标明语句块的,而是用严格的缩进来体现。 现在有一种简化版的Python,只有两种语句: (1)'s'语句:Simple statements. 相当于一般语句。 (2)
阅读全文