这就是…

题目描述

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

输入

输入共两行。

第一行是三个整数:n,r,c。(r, c <= 104, r * c <= n <= 106)

第二行是 n 个整数 Pi。(0 < pi <= 109)

输出

输出一个整数,即满足条件的最小的法值。

样例输入

7 2 3
170 205 225 190 260 225 160

样例输出

30

思路

给定一个N如果可以找到R个C满足法值小于等于N,那么N就符合答案。于是就用二分查找,一步步逼近最小的N。

AC代码

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#define N 1000006
using namespace std;
int n, r, c;
int a[N], dis[N];
int solve(int t) {int i = c;       int sum = 0;    //sum表示能找到C的个数 while(i <= n) {if(dis[i] <= t) {sum++;i += c; //找到一个C,从下一个i + c 开始找 if(sum >= r) {  //如果能找到R个C就返回true return 1;}}else {i++;}}return 0;
}
int main() {
//  freopen("in.txt", "r", stdin);while(scanf("%d%d%d", &n, &r, &c) != EOF) {for(int i = 1; i <= n; i++) {scanf("%d", &a[i]);}sort (a + 1, a + 1 + n);for(int i = c; i <= n; i++) {   //dis[]记录每C个的法值 dis[i] = a[i] - a[i - c + 1];}int left = 0, right = 1e9;      //二分找答案 while(left < right) {int mid =  (left + right) / 2;int t = solve(mid);if(t) {right = mid;     }else {left = mid + 1; }
//          printf("%d %d\n", left, right);     }printf("%d\n", left);}return 0;
}

2259: matrix相关推荐

  1. Android 自定义View ——Matrix (矩阵)

    Matrix的作用: Matrix类包含一个3x3矩阵,用于转换坐标 Matrix (矩阵) 的原理很遗憾自己目前也是含糊的很,这里就不说了,记录自己在项目使用的方法, 这里就简单的记录下Matrix ...

  2. Codeforces 903F Clear The Matrix(状态压缩DP)

    题目链接 Clear The Matrix 题意 给定一个$4 * n$的矩形,里面的元素为$'.'$或$'*'$.现在有$4$种正方形可以覆盖掉$'*'$,正方形的边长分别为$1,2,3,4$. 求 ...

  3. ie旋转滤镜Matrix

    旋转一个元素算是一个比较常见的需求了吧,在支持CSS3的浏览器中可以使用transform很容易地实现,这里有介绍:http://www.css88.com/archives/2168,这里有演示ht ...

  4. Eigen(1):Matrix模板类

    Matrix是一个模板类,利用模板类可以定义矩阵类. 矩阵类模板: 1Matrix类有6个模板参数,只需要了解前3个就好了. Matrix<typename Scalar, int RowsAt ...

  5. CUDA Samples: matrix multiplication(C = A * B)

    以下CUDA sample是分别用C++和CUDA实现的两矩阵相乘运算code即C= A*B,CUDA中包含了两种核函数的实现方法,第一种方法来自于CUDA Samples\v8.0\0_Simple ...

  6. 二维码Data Matrix的解码实现(zxing-cpp)

    二维码Data Matrix的介绍可以参考http://blog.csdn.net/fengbingchun/article/details/44279967 ,以下是通过zxing-cpp开源库实现 ...

  7. 二维码Data Matrix编码、解码使用举例

    二维码Data Matrix的介绍见: http://blog.csdn.net/fengbingchun/article/details/44279967  ,这里简单写了个生成二维码和对二维码进行 ...

  8. 二维码Data Matrix简介及在VS2010中的编译

    Data Matrix 二维条码原名Datacode,由美国国际资料公司(International Data Matrix, 简称ID Matrix)于1989年发明.Data-Matrix二维条码 ...

  9. Educational Codeforces Round 9 F. Magic Matrix 最小生成树

    F. Magic Matrix 题目连接: http://www.codeforces.com/contest/632/problem/F Description You're given a mat ...

最新文章

  1. Lispbox的简单配置
  2. ubuntu下修改键位
  3. 重磅 | 激活数据价值 阿里云推出云原生数据库备份DBS新版本
  4. 朴素贝叶斯(Naive Bayes),“Naive”在何处?
  5. zabbix网络发现主机
  6. docker 查看实时日志
  7. 周五下午3h直播丨2021第5期大咖讲坛:数据库安全与智能运维
  8. java程序设计图形题_面向对象与Java程序设计基础题目:设计一个程序可以一计算平面图形的面积和立体图形的体积。1.使用interface关键...
  9. 2016蓝桥杯C++A组第六题 寒假作业【暴力搜索】
  10. java gui设置圆形按钮_简单的设置圆形按钮
  11. ActiveMQ - 持久化消息与持久主题订阅
  12. 一文读懂FFT,海宁窗(hann)和汉明窗(hamming)的区别,如何选择窗函数
  13. visio一分二的箭头_Visio如何画各种线条与箭头?
  14. 高斯勒让德求积公式matlab通用程序,MATLAB软件及高斯勒让德求积公式.doc
  15. BUUCTF——密码学——old-fashion
  16. LeetCode46:全排列(八皇后)
  17. MNIST | 基于k-means和KNN的0-9数字手写体识别
  18. diskgenius创建efi分区_复制文件到当前分区
  19. Ubuntu1604报错统一解决方法E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用)
  20. How to test Neutron VRRP HA rapidly (by quqi99)

热门文章

  1. UVa11729 - Commando War(贪心)
  2. Codeforces Round #379 (Div. 2) E. Anton and Tree
  3. hdu 3065 AC自动机
  4. [导入].Net2.0 使用ConfigurationManager读写配置文件
  5. 对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成。
  6. 使用三目运算嵌套方法 或 临时变量方法: 获取三个整数中最大值的数
  7. OpenGL之正背面剔除、深度测试与多边形偏移
  8. Java 多线程Thread
  9. 【机器视觉】 measure_pairs算子
  10. 【机器视觉】 dev_open_file_dialog算子