摘要:
题目链接:BZOJ - 1046题目分析先倒着做最长下降子序列,求出 f[i],即以 i 为起点向后的最长上升子序列长度。注意题目要求的是 xi 的字典序最小,不是数值!如果输入的 l 大于最长上升子序列长度,输出 Impossible。否则,从 1 向 n 枚举,贪心,如果 f[i] >= l,就... 阅读全文
摘要:
题目链接:BZOJ - 1816题目分析答案具有可以二分的性质,所以可以二分答案。验证一个答案 x 是否可行,就累加一下各种牌相对于 x 还缺少的量,如果总和超过了 x 或 m ,就不可行。因为,当使用的joker小于等于 x 时,才可以通过合适地安排顺序使得每组牌中至多有一张 joker 。代码#... 阅读全文
摘要:
题目链接:BZOJ - 1303题目分析首先,找到 b 的位置 Pos, 然后将数列中小于 b 的值赋为 -1 ,大于 b 的值赋为 1 。从 b 向左扩展,不断算 Sum[i, b - 1] ,然后将 Cnt[Sum[i, b - 1]] 加一,这样就算出每个左边的Sum值有多少个了。然后从 b ... 阅读全文
摘要:
题目链接:BZOJ - 1207题目分析每一次打鼹鼠一定是从上一次打某只鼹鼠转移过来的,从打第 j 只鼹鼠能不能转移到打第 i 只鼹鼠,算一下曼哈顿距离和时间差就知道了。那么就有一个 DP ,用 f[i] 表示打完第 i 只鼹鼠时最多打了多少只鼹鼠,然后 f[i] 可以由 f[1] .. f[i-1... 阅读全文