摘要:
很容易想到把大于b的数赋值为1,小于b的数赋值为-1。 做一遍前缀和。 于是问题变成求sum[j]-sum[i]=0 (0<=i<w && j>=w) 于是直接按照b所在位置划分成两段,分别用桶统计sum某值出现的次数,注意sum数组中的数可能会出现负数,于是要加上一个n防止访问负的下标。 最后用乘 阅读全文
摘要:
一道伟大的题。 阅读全文
摘要:
任何数都可用2的幂次方加和得到。 于是问题变成求2^k大于m的第一个k。 阅读全文
摘要:
最长公共子序列。 设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]) 阅读全文
摘要:
正反做两次最长上升子序列。 记f[i]为正着做以Ti为结尾的最长上升子序列。 记g[i]为倒着做以Ti为结尾的最长上升子序列。 答案就是n-max(f[i]+g[i]-1)。 阅读全文