摘要: 很容易想到把大于b的数赋值为1,小于b的数赋值为-1。 做一遍前缀和。 于是问题变成求sum[j]-sum[i]=0 (0<=i<w && j>=w) 于是直接按照b所在位置划分成两段,分别用桶统计sum某值出现的次数,注意sum数组中的数可能会出现负数,于是要加上一个n防止访问负的下标。 最后用乘 阅读全文
posted @ 2018-01-23 20:34 TrassBlose 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 一道伟大的题。 阅读全文
posted @ 2018-01-23 19:55 TrassBlose 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 任何数都可用2的幂次方加和得到。 于是问题变成求2^k大于m的第一个k。 阅读全文
posted @ 2018-01-23 19:50 TrassBlose 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 最长公共子序列。 设f[i][j]为前第一个序列前i和第二个序列前j的最长公共子序列。 f[i][j]=f[i-1][j-1] (a[i]=b[j]) f[i][j]=max(f[i-1][j],f[i][j-1]) (a[i]!=b[j]) 阅读全文
posted @ 2018-01-23 16:00 TrassBlose 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 正反做两次最长上升子序列。 记f[i]为正着做以Ti为结尾的最长上升子序列。 记g[i]为倒着做以Ti为结尾的最长上升子序列。 答案就是n-max(f[i]+g[i]-1)。 阅读全文
posted @ 2018-01-23 15:02 TrassBlose 阅读(80) 评论(0) 推荐(0) 编辑