摘要: 问题概述:共有N个K元组(x1,x2,x3…xk),一个K元组最大,当且仅当没有一个K元组每个xi都比它大。求最大K元组。一般地,为了问题更加简洁,每个xi都为小于等于N的正整数,K看为较小的常数。朴素算法无论K等于几,均可在至多O(n^2)时间内解决。当K=1时,O(n)查找。 相关题目:不解释当K=2时,O(n)双关键字基数排序。 相关题目:NBOI2011牛人(xi任意,快排即可)当K=3时,O(nlogn)线段树。 相关题目:空心长方体当K=4时,O(nlognlogn)树套树。 相关题目:东方幻想乡模拟赛第5场yousei当K=5时,O(nlognlognlogn)树套树套树。当K= 阅读全文
posted @ 2012-03-08 19:58 FancyCoder0 阅读(413) 评论(0) 推荐(0) 编辑
摘要: 【题目分析】一条直线上给定相对距离Di(距第一个村庄的距离)的N个村庄中建K个基站,每个村庄i接收的范围为前后Si,建基站费用Ci,一个村庄要么被接受到要么额外支付Wi。设计方案求最小总费用。【算法分析】朴素方程为f[i][j](前i个村庄中选j个基站,第j个建在i)=MIN(f[k][j-1]+W[k+1..j](表示k+1..j村庄中建一个基站后覆盖所有k+1..j(没覆盖就支付费用)所需的最小总和)).W预处理需要N^3时间,DP需要N^2*K的时间。显然需要优化。其实这样一个“裸”的方程看起来似乎很难再在时间上优化下去,因为该算法的瓶颈在于预处理的“复杂”(预处理涉及到题中的C、S、W 阅读全文
posted @ 2012-03-08 19:24 FancyCoder0 阅读(568) 评论(0) 推荐(0) 编辑