*HDU3486 RMQ+二分
Interviewe
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 6722 Accepted Submission(s): 1592
has a company and he wants to employ m people recently. Since his
company is so famous, there are n people coming for the interview.
However, YaoYao is so busy that he has no time to interview them by
himself. So he decides to select exact m interviewers for this task.
YaoYao
decides to make the interview as follows. First he queues the
interviewees according to their coming order. Then he cuts the queue
into m segments. The length of each segment is

, which means he ignores the rest interviewees (poor guys because they
comes late). Then, each segment is assigned to an interviewer and the
interviewer chooses the best one from them as the employee.
YaoYao’s
idea seems to be wonderful, but he meets another problem. He values the
ability of the ith arrived interviewee as a number from 0 to 1000. Of
course, the better one is, the higher ability value one has. He wants
his employees good enough, so the sum of the ability values of his
employees must exceed his target k (exceed means strictly large than).
On the other hand, he wants to employ as less people as possible because
of the high salary nowadays. Could you help him to find the smallest m?
In
the first line of each case, there are two numbers n and k, indicating
the number of the original people and the sum of the ability values of
employees YaoYao wants to hire (n≤200000, k≤1000000000). In the second
line, there are n numbers v1, v2, …, vn (each number is between 0 and
1000), indicating the ability value of each arrived interviewee
respectively.
The input ends up with two negative numbers, which should not be processed as a case.
We need 3 interviewers to help YaoYao. The first one interviews people from 1 to 3, the second interviews people from 4 to 6,
and the third interviews people from 7 to 9. And the people left will be ignored. And the total value you can get is 100+101+100=301>300.
//RMQ.二分啊老出错
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int peo[];
int dp[][];
void rmq1(int n)
{
for(int i=;i<n;i++)
dp[i][]=peo[i];
for(int j=;(<<j)<=n;j++)
{
for(int i=;i+(<<j)-<n;i++)
dp[i][j]=max(dp[i][j-],dp[i+(<<(j-))][j-]);
}
}
int rmq2(int lef,int rig)
{
int k=;
while(<<(k+)<=rig-lef+) k++;
return max(dp[lef][k],dp[rig-(<<k)+][k]);
}
int main()
{
int n,k;
while(scanf("%d%d",&n,&k))
{
int sum=;
if(n<&&k<) break;
for(int i=;i<n;i++)
{
scanf("%d",&peo[i]);
sum+=peo[i];
}
if(sum<=k)
{
printf("-1\n");
continue;
}
rmq1(n);
int ans=;
int lef=,rig=n,mid;
while(lef<=rig)
{
mid=(lef+rig)>>;
int num=;
int len=n/mid;
for(int i=;i<=mid;i++)
{
num+=rmq2((i-)*len,i*len-);
}
if(num>k)
{
ans=mid;
rig=mid-;
}
else lef=mid+;
}
printf("%d\n",ans);
}
return ;
}
*HDU3486 RMQ+二分的更多相关文章
- hdu 5289 Assignment(2015多校第一场第2题)RMQ+二分(或者multiset模拟过程)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5289 题意:给你n个数和k,求有多少的区间使得区间内部任意两个数的差值小于k,输出符合要求的区间个数 ...
- hdu 3486 Interviewe (RMQ+二分)
Interviewe Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- 【bzoj2500】幸福的道路 树形dp+倍增RMQ+二分
原文地址:http://www.cnblogs.com/GXZlegend/p/6825389.html 题目描述 小T与小L终于决定走在一起,他们不想浪费在一起的每一分每一秒,所以他们决定每天早上一 ...
- HDU 5089 Assignment(rmq+二分 或 单调队列)
Assignment Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- 玲珑杯 Round 19 B Buildings (RMQ + 二分)
DESCRIPTION There are nn buildings lined up, and the height of the ii-th house is hihi. An inteval [ ...
- codeforces 487B B. Strip(RMQ+二分+dp)
题目链接: B. Strip time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- CodeForces 689D Friends and Subsequences (RMQ+二分)
Friends and Subsequences 题目链接: http://acm.hust.edu.cn/vjudge/contest/121333#problem/H Description Mi ...
- HDU 5726 GCD (RMQ + 二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5726 给你n个数,q个询问,每个询问问你有多少对l r的gcd(a[l] , ... , a[r]) ...
- 2016 Multi-University Training Contest 1 GCD RMQ+二分(预处理)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5726 题意:有N(N <= 100,000),之后有Q(Q <= 100,000)个区间查询[ ...
随机推荐
- mysql安装配置
MySQL 是最流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言. MySQL由于其体积小.速度快 ...
- Excel 自动更正
当有复杂的字段需要重复填写怎么办呢,比如××银行卡号,××电话号码,××公司地址等.可以使用excel的"自动更正"功能解决. 1. Excel 2010的自动更正选项在哪里呢 2 ...
- eclipse version
查看Eclipse的版本号: 1. 找到eclipse安装目录 2. 进入readme文件夹,打开readme_eclipse.html 3. readme_eclipse.html呈现的第二行即数字 ...
- JavaScript正则表达式详解(一)正则表达式入门
JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...
- bash 语法使用
1.定义函数时,不需要使用function作为函数的命名. 函数不需要形参. 函数名不能以数字作为开头 main() { in ) 1_start ;; ) 1_start 5_start ;; ) ...
- Windows中explorer(图形壳)
explorer是Windows程序管理器或者文件资源管理器. 用于管理Windows图形壳.(桌面和文件管理.) 删除该程序会导致Windows图形界面无法使用. explorer.exe进程是微软 ...
- js框架设计1.2对象扩展笔记
需要一个新的功能添加到我们的命名空间上.这方法在JS中被叫做extend或者mixin,若是遍历属性用一下1.1代码,则会遍历不出原型方法,所以1.2介绍的是mass Framework里的mix方法 ...
- iOS开发UI篇—核心动画简介
转自:http://www.cnblogs.com/wendingding/p/3801036.html iOS开发UI篇—核心动画简介 一.简单介绍 Core Animation,中文翻译为核心动画 ...
- Oracle资源管理器(二)-- 创建和使用数据库资源计划
(参考 http://blog.csdn.net/mrluoe/article/details/7969436 -- 整理并实践通过) 第1步,创建3个用户 SQL> create user s ...
- Redis到底该如何利用?
Redis是个好东西,经过上两个星期的研究和实践,目前正在项目里大规模的替换掉原来的本地内存cache.但是替换过程中却发现,Redis这东西高端,大气上档次,似乎不是我想象里的使用方法. 在没有深入 ...