$des$
有 $n$ 个物品,第 $i$ 个物品有两个属性 $k_i, b_i$ ,表示它在时刻 $x$ 的价值为 $k_i

\times x + b_i$ .
当前处于时刻 $0$ ,你可以选择不超过 $m$ 个物品,使得存在某个整数时刻 $t$, $t >= 0$

,你选择的所有物品的总价值大于等于 $S$ .
给出 $S$,求 $t$ 的最小值。

$sol$
选择任意一个集合,得到的收益和都可以表示为一个一次函数的形式。只关心这些
一次函数的最大值,可以发现这个最大值一定是先降后增的(当 t 非常大时,$k_i \times t > b_i$, 也有可能是单调递增或者单调递减)。
因此只需要 check 一下 0 时刻是否符合条件,如果不符合则进行二分。
注意 check 的时候只需要找出最大的 m 个即可,因此可以 O(n) 地做,具体做法是快排
的过程中只递归一边。直接用 STL 的 nth_element() 即可。
时间复杂度 $O(nlog10^9)$

$code$

#include <bits/stdc++.h>

#define Rep(i, j, k) for (int i = j; i <= k; i++)

using namespace std;

int Read() {
char c = getchar(); int x = ;
int sig = ;
while (c < '' || c > '') { if (c == '-') sig = -; c = getchar(); }
while (c >= '' && c <= '') x = x * + c - '', c = getchar();
return x * sig;
} const int N = 1e6 + ; typedef long long LL; int n, m;
LL S; int k[N], b[N];
LL val[N]; bool check(int x) {
Rep(i, , n) val[i] = 1ll * k[i] * x + b[i];
nth_element(val + , val + m, val + n + , greater<LL>());
LL sum = ;
Rep(i, , m) if (val[i] > && (sum += val[i]) >= S) return true;
return false;
} int main() { n = Read(), m = Read(); scanf("%lld", &S);
Rep(i, , n) k[i] = Read(), b[i] = Read(); if (check()) {puts(""); return ;} int L = , R = 1e9, Ans;
while (L <= R) {
int mid = (L + R) / ;
if (check(mid)) Ans = mid, R = mid;
else L = mid + ;
}
printf("%d\n", Ans); return ;
}

Problem 6 二分的更多相关文章

  1. codeforces 761 D. Dasha and Very Difficult Problem(二分+贪心)

    题目链接:http://codeforces.com/contest/761/problem/D 题意:给出一个长度为n的a序列和p序列,求任意一个b序列使得c[i]=b[i]-a[i],使得c序列的 ...

  2. codeforces 1288D. Minimax Problem(二分)

    链接:https://codeforces.com/contest/1288/problem/D D. Minimax Problem 题意:给定n个数组,长度为m,从n中数组挑选两个数组,两个数组中 ...

  3. HDU 4282 A very hard mathematic problem --枚举+二分(或不加)

    题意:问方程X^Z + Y^Z + XYZ = K (X<Y,Z>1)有多少个正整数解 (K<2^31) 解法:看K不大,而且不难看出 Z<=30, X<=sqrt(K) ...

  4. HDU 5371 (2015多校联合训练赛第七场1003)Hotaru&#39;s problem(manacher+二分/枚举)

    pid=5371">HDU 5371 题意: 定义一个序列为N序列:这个序列按分作三部分,第一部分与第三部分同样,第一部分与第二部分对称. 如今给你一个长为n(n<10^5)的序 ...

  5. poj3258 River Hopscotch(二分最小值,好题)

    https://vjudge.net/problem/POJ-3258 二分最小值,判断需要删去的点的个数,如果大于给定,则直接return 0,则说明该数需要再小. 最后注意,起点是0终点是l,起点 ...

  6. poj2456 Aggressive cows(二分查找)

    https://vjudge.net/problem/POJ-2456 二分,从最大长度开始,不断折半试,如果牛全放下了,就是可行,修改下界,否则改上届. #include<iostream&g ...

  7. poj1064 Cable master(二分查找,精度)

    https://vjudge.net/problem/POJ-1064 二分就相当于不停地折半试. C++AC,G++WA不知为何,有人说C函数ans那里爆int了,改了之后也没什么用. #inclu ...

  8. Educational Codeforces Round 61 D 二分 + 线段树

    https://codeforces.com/contest/1132/problem/D 二分 + 线段树(弃用结构体型线段树) 题意 有n台电脑,只有一个充电器,每台电脑一开始有a[i]电量,每秒 ...

  9. POJ 3104 Drying [二分 有坑点 好题]

    传送门 表示又是神题一道 Drying Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9327   Accepted: 23 ...

随机推荐

  1. 3.NioEventLoop的启动和执行

    NioEventLoop启动和执行 NioEventLoop启动 在服务端启动的代码中,我们看到netty在注册和绑定时,判断了当前线程是否是NioEventLoop线程.如果不是, 则将这些操作包装 ...

  2. 基于node.js 的 websocket的移动端H5直播开发

    这一篇介绍一下基于node.js 的 websocket的移动端H5直播开发, 下载文章底部的源码,我是用vscode打开, 首先在第一个终端运行 npm run http-server 这个指令是运 ...

  3. 纯 CSS 画 iphone

    好几天没有更新了,直接上效果吧,哈哈!(我想这个应该大部分都会!哈哈哈!) 代码如下: html: <div class="container"> <div cl ...

  4. UI5-技术篇-Hybrid App-2-Geolocation位置定位

    在SAP WEB IDE简单测试基于HTML5自带的定位功能,相关步骤如下: 1.VIEW代码 <mvc:View xmlns:core="sap.ui.core" xmln ...

  5. You may need to add '192.168.55.10' to ALLOWED_HOSTS.

    DisallowedHost at / Invalid HTTP_HOST header: '192.168.55.10:8000'. You may need to add '192.168.55. ...

  6. laravel使用withCount获取列表下关联模型的数量

    模型里面 <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Post extends Model ...

  7. web服务版智能语音对话

    在前几篇的基础上,我们有了语音识别,语音合成,智能机器人,那么我们是不是可以创建一个可以实时对象的机器人了? 当然可以! 一,web版智能对话 前提:你得会flask和websocket 1 ,创建f ...

  8. Centos7.4(阿里云环境)挂载数据盘

    Centos7.4(阿里云环境)挂载数据盘 2018.08.29 10:19 947浏览 查看数据盘 disk -l 磁盘 /dev/vda:42.9 GB, 42949672960 字节,83886 ...

  9. orm字段类型使用

    IntegerField:整数类型,映射到数据库中会变成11位的int类型 num是整型字典  object中的5是第五行还是id是5? 整型字符串型都可以传到整数字段 FloatField:浮点数类 ...

  10. 2013.4.29 - KDD第十一天

    今天上午在图书馆写FIrst集,真心没写出来,算法是昨天找好的,不过实现的话还是需要很大的代码量,然后就打算用郑茂或者韩冰的代码了. 晚上图书馆快关门的时候开始思考KDD的问题, 我一开始打算给中秋发 ...