摘要:
1021 ModricWang的序列问题II 思路 此题与上一题区别不是很大,只是增加了一个长度限制,当场通过的人数就少了很多。 大体解题过程与上一题相同。区别在于对$f[]$ 的操作。没有长度限制的时候,$f[]$ 的更新策略是立即更新。假设间隔为$T$,现在由于需要考虑间隔,那么在处理第$i$ 阅读全文
摘要:
Bamboo and the Ancient Spell 分析 可能英文读题难度比较大,但是只要看到全大写的 "THE LONGEST COMMON SUBSEQUENCE !"应该就清楚这是考什么的了。 最长公共子序列:可以不连续。序列长度很大时,暴力方法非常费时,这也是一道比较经典的《算法导论》 阅读全文
摘要:
940 AlvinZH的最“长”公共子序列 思路 DP,难题。 $dp[i][j]$ :记录A的前i个字符与B的前j个字符变成相同需要的最小操作数。 初始化:dp[i][0] = i, dp[0][i] = i。分别代表i次删除or添加操作。 三种操作得到dp[i][j],取其中最小值: 替换:可能 阅读全文
摘要:
978 AlvinZH的1021实验plus 思路 贪心,中等题。 使用miss变量表示未覆盖的最小数字,初始值为1。 初始覆盖区间为[1,miss),目标是覆盖[1,m],即miss需要大于m。 需要比较miss和数组里没有使用的数字中最小的数字x(所以需要先给数组排序。 miss更小:没有一个组 阅读全文
摘要:
975 AlvinZH的1021实验 思路 贪心,简单题。 题目已经说明有且只有一种方法表示所求数,简单列举几项可以发现只由前i个砝码会可以表示[1,∑Wi]的所有数的。先找到最大需要的砝码Wi,问题变成了表示(n Wi),可递归,可循环。见看考代码一。 本题亦可联想到三进制,思路清奇。可以参考段柯 阅读全文
摘要:
1019 ModricWang的序列问题 思路 此题题意非常清晰,给定一个序列,求出最长上升子序列的长度。从数据规模来看,需要$O(nlogn)$ 的算法。 $O(nlongn)$ 求最长上升子序列的做法如下: 维护一个数组$f[]$ ,其中$f[i]$ 表示当前步骤下长度为i的上升子序列的末尾元素 阅读全文
摘要:
Bamboo和人工ZZ 题意: 非常直白,经典的动态规划矩阵链乘问题 分析: 矩阵链A1A2..An满足结合律,可以使用加括号的方式,降低运算代价。 一个p q的矩阵和一个q r的矩阵相乘,计算代价为p q r 加括号时满足动态规划的特性 长度为1的矩阵不需要加括号 长度 =2的矩阵链AiAi+1. 阅读全文
摘要:
904 Winter is coming 思路 难题。首先简化问题, $n$ 个0与 $m$ 个1排成一列,连续的0不能超过x个,连续的1不能超过y个,求排列方法数。 显然会想到这是动态规划。最快想到的方法是 $dp[i][j][x][y]$ 表示已经有i个北境兵j个野人参与排列,且末尾有x个连续北 阅读全文
摘要:
936 ModricWang的导弹防御系统 思路 题意即为:给出一个长度为n的序列,求出其最长不降子序列。 考虑比较平凡的DP做法: 令$nums[i]$ 表示这个序列,$f[x]$ 表示以第$x$个数为结尾的最长的不降子序列的长度,状态转移方程为: $$ f[i]=(\max{f[j]}+1) \ 阅读全文
摘要:
930 ModricWang's Polygons 思路 首先要想明白,哪些多边形可能是格点正多边形? 分情况考虑: 三角形不可能,因为边长为有理数的正三角形的面积为无理数,而格点三角形的面积为有理数,二者矛盾。 正四边形毫无疑问是可以的。 边数 4时,可以考虑无穷递降法: 以六边形为例,假如整点正 阅读全文
摘要:
915 双十一的抉择 思路 中等题。简化题目:一共n个数,分成两组,使得两组的差最接近0,就是说要使两组数都尽可能的接近sum/2。 思路还是很混乱的,不知道如何下手,暴力也挺难的,还不能保证对。想一想,从一堆数中取出一些使得和尽可能接近sum/2,把sum/2当作背包总体积,每个数字当作每件物品的 阅读全文
摘要:
905 AlvinZH的奇幻猜想——三次方 思路 中等题。题意简单,题目说得简单,把一个数分成多个立方数的和,问最小立方数个数。 脑子转得快的马上想到贪心,从最近的三次方数往下减,反正有1^3在最后撑着保证减完。不好意思这是错的,因为1,27,64,125...等立方数之间并不是倍数关系,不能构成贪 阅读全文
摘要:
B Bamboo和巧克力工厂 分析 三条流水线的问题,依然是动态规划,但是涉及的切换种类比较多。比较易于拓展到n条流水线的方式是三层循环,外层是第k个机器手,里面两层代表可切换的流水线 核心dp语句:cost[i][k] = min(cost[i][k], cost[j][k 1]+t[j][i]+ 阅读全文
摘要:
A Bamboo的小吃街 分析 经典的两条流水线问题,题目描述基本类似于课件中的流水线调度,符合动态规划最优子结构性质 关键的动态规划式子为: dp[0][j] = min(dp[0][j 1], dp[1][j 1] + t[1][j 1]) + p[0][j] //保存在左边第j个店铺时已经用的 阅读全文