【JZOJ4790】选数问题
来源:互联网 发布:即时通讯办公软件 编辑:程序博客网 时间:2024/06/08 11:38
Description
在麦克雷的面前有N个数,以及一个R*C的矩阵。现在他的任务是从N个数中取出R*C个,并填入这个矩阵中。矩阵每一行的法值为本行最大值与最小值的差,而整个矩阵的法值为每一行的法值的最大值。现在,麦克雷想知道矩阵的最小法值是多少。
Solution
最优方案肯定是排序后,每一行连着选C个,然后按顺序选出R行即可。
于是二分判断解决。
Code
#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)#define N 500001using namespace std;int a[N];int n,r,c,qq=0;bool check(int mid){ int cnt=0,p=0; while(p+1<=n-c+1) { p++; if(a[p+c-1]-a[p]<=mid) { p+=c-1; cnt++; } } if(cnt>=r) return true; return false;}int main(){ cin>>n>>r>>c; fo(i,1,n) scanf("%d",&a[i]); sort(a+1,a+n+1); int l=0,r=a[n]-a[1]; while(l+1<r) { int mid=(l+r)/2; if(check(mid)) r=mid; else l=mid; } if(check(l)) cout<<l; else cout<<r;}
1 0
- 【jzoj4790】【选数问题】
- 【JZOJ4790】选数问题
- Jzoj4790 选数问题
- NOIP提高组【JZOJ4790】选数问题
- 【JZOJ4790】【NOIP2016提高A组模拟9.21】选数问题
- 选数问题
- 选数问题
- 【NOIP模拟】选数问题
- 喵哈哈的日常选数问题
- 喵哈哈的日常选数问题
- 【NOIP提高组】选数问题
- 分数变小数问题
- 数素数问题
- 和尚数佛珠问题
- 鬼谷子 猜数问题
- 方形问题(数方形)
- 删数问题
- 数塔问题
- org.hibernate.MappingException: Unknown entity
- HDU 5875 二分+st表
- 关于WAS让人蛋疼的节点
- linux 信号详解
- linux命令
- 【JZOJ4790】选数问题
- 网络爬虫,用C#做一个网络爬虫demo,功能有保存网页、图片、js文件、等等其他的文件。有界面显示,有代码注释。
- Process terminated with status 255 错误,首先检查错误
- iOS富文本设置样式,插入图片,点击事件
- 在多线程情况下,block比delegate有优势。
- hihocoder 1384 Genius ACM
- Leetcode -- Verify Preorder Serialization of a Binary Tree
- PCB课程设计5
- Uva 11478 Halum(差分约束系统 + 二分)