*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)个区间查询[ ...
随机推荐
- NOSDK--SDK一键打包及统一接入的实现(前言)
前言 一,一键打包的实现 1.1 shell脚本执行流程介绍 1.2 自动刷新mk文件的脚本介绍 1.3 编译及拷贝资源的脚本介绍 1.4 打包及签名的脚本介绍 1.5 mac下的脚本环境配置及脚本的 ...
- css浏览器兼容问题
https://www.douban.com/group/topic/4629864/
- PHP写文件函数
/** * 写文件函数 * * @param string $filename 文件名 * @param string $text 要写入的文本字符串 * @param string $openmod ...
- 商品库存“存取设计”,MySQL事务、表锁、行锁
MySQL 使用 SELECT ... FOR UPDATE 做事务写入前的确认 以MySQL 的InnoDB 为例,预设的 Tansaction isolation level 为 REPEATA ...
- js: 从setTimeout说事件循环模型
一.从setTimeout说起 setTimeout()方法不是ecmascript规范定义的内容,而是属于BOM提供的功能.查看w3school对setTimeout()方法的定义,setTimeo ...
- wow经典台词
永恒岛,磐皂在玄牛上场时喊:你能否独立山巅,任由风霜侵袭,直至沧海变为桑田,高山沉入海底?风刀霜剑,四面受敌.不动如山,亘古不移. 巫妖王:当一切结束,你会跪求我的宽恕...而我,会拒绝你! 伊利丹: ...
- php解析.csv文件
public function actionImport() { //post请求过来的 $fileName = $_FILES['file']['name']; $fileTmpName = $_F ...
- .NET LINQ 联接运算
联接运算 将两个数据源“联接”就是将一个数据源中的对象与另一个数据源中共享某个通用特性的对象关联起来. 当查询所面向的数据源相互之间具有无法直接领会的关系时,联接就成为一项重要的运 ...
- <%#Eval if判断用法
1.绑定Repeater 基础用法 <%#Eval("RoleID")%> 2.简单判断用法 <td> <%# Convert.ToBoolean(E ...
- PHP日期与时间
时间戳是自 1970 年 1 月 1 日(00:00:00 GMT)以来的秒数.它也被称为 Unix 时间戳(Unix Timestamp).Unix时间戳(Unix timestamp),或称Uni ...