选数问题【NOIP2016提高A组模拟9.21】

题目

在麦克雷的面前有N个数,以及一个R*C的矩阵。现在他的任务是从N个数中取出R*C个,并填入这个矩阵中。矩阵每一行的法值为本行最大值与最小值的差,而整个矩阵的法值为每一行的法值的最大值。现在,麦克雷想知道矩阵的最小法值是多少。

样例输入:
输入共两行。
第一行是三个整数:n,r,c。
第二行是 n 个整数 Pi。
7 2 3
170 205 225 190 260 225 160

样例输出:
共 m 行,每行一个整数,表示满足条件的对数。
30

数据范围:
30%:1<=n,r,c<=100
50%:1<=n,r,c<=1000
100%:1<=r,c<=10^4,r* c<=n<=5*10^5,0

剖解题目

。。。。。。。。


思路

一般求最优值就是dp之类的,所以很自然就往dp方向去想。
然而设出一个二维的dp状态,发现空间和时间都炸了。
想了一会儿发现空间可以用滚动代替,而时间好像用单调队列可以搞一搞。。。。
搞完后发现时间也炸了。
这道题就炸了。


解法

30%:暴力。
50%:应该是个dp加个优化之类的,就如我当时想的。
100%:二分答案,这样可以省去一维的dp,让时间达到要求。
很明显肯定是按大小顺序选

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值