博客
关于我
T145305 【2020.8.24NOIP模拟赛】选数排列【二分】
阅读量:340 次
发布时间:2019-03-04

本文共 630 字,大约阅读时间需要 2 分钟。

在这里插入图片描述

这道题看到最大数和最小数可以想到二分
我们二分一个最大差值,定义一个 f f f 数组看看当前的最大差值能否满足行数
只有当当前差值 < < < 最大差值才能保证枚举的这一行是合法的。

代码

#include
#include
#include
#include
#include
using namespace std;long long a[1000010],f[1000010];long long n,r,c;bool check(int maxx){ for(int i=0; i<=c-1; i++) f[i]=0; for(int i=c; i<=n; i++) { f[i]=f[i-1]; //赋初值 if(a[i]-a[i-c+1]<=maxx) //当前差值
<最大差值才能保证枚举的这一行是合法的。 f[i]="f[i-c]+1;" } if(f[n]>
=r) //满足行数要求 return 1; else return 0;}int main(){ cin>>n>>r>>c; for(int i=1; i<=n; i++) scanf("%lld",&a[i]); sort(a+1,a+1+n); int l=0,r=a[n]-a[1],mid; while(l
>1; if(check(mid)) r=mid; else l=mid+1; } cout<

转载地址:http://atle.baihongyu.com/

你可能感兴趣的文章
代理模式
查看>>
Js中Currying的应用
查看>>
长按键入
查看>>
Vuex和普通全局对象
查看>>
JavaScript中的链式调用
查看>>
day-04-列表
查看>>
Linux 磁盘管理(df fu fdisk mkfs mount)
查看>>
空间向量
查看>>
第一类曲面积分
查看>>
Mybatis的介绍和基本使用
查看>>
Redis简介(数据结构,哨兵、集群和SpringDataRedis)
查看>>
jar包破解Idea
查看>>
MySQL锁机制
查看>>
Java 设置PDF文档浏览偏好
查看>>
Java 添加、替换、删除PDF中的图片
查看>>
C#中构造函数的作用
查看>>
Go 数组&切片
查看>>
Go 文件操作
查看>>
老Python总结的字典相关知识
查看>>
深入理解 ZK集群的Leader选举
查看>>