Merchant

题目描述

有\(n\)个物品,第\(i\)个物品有两个属性\(k_i,b_i\),表示它在时刻\(x\)的价值为\(k_i\times x+b_i\).

当前处于时刻\(0\),你可以选择不超过\(m\)个物品,使得存在某个整数时刻\(t,t≥ 0\),你选择的所有物品的总价值大于等于\(S\).

给出\(S\),求\(t\)的最小值。

输入输出格式

输入格式

第一行三个整数\(n,m,S\).

接下来\(n\)行,第\(i\)行两个整数\(k_i,b_i\).

输出格式

一行一个整数表示答案.

数据范围

对于所有数据,有\(1\le m\le n\le 10^6,-10^9 \le b_i \le 10^9,-10^6 \le k_i \le 10^6,0 \le S \le 10^{18}\).

数据保证有解,且答案不超过\(10^9\)。

  • \(\text{Subtask}1(22\%)\), \(n ≤ 20\).
  • \(\text{Subtask}2(36\%)\), \(n ≤ 10^5\),\(0 ≤ k_i ≤ 10^4\).
  • \(\text{Subtask}3(8\%)\), \(k_i ≤ 0\).
  • \(\text{Subtask}4(12\%)\), \(n ≤ 10^5\).
  • \(\text{Subtask}5(22\%)\), 没有特殊的约束。

一开始大家都想二分\(t\)

但很快发现这样是不对哒

可事实上又是可以哒

\(t\)的造成的最大的可取集合在值域上要么单调增,要么先单减后单增。

对于后者,我们先判\(0\),然后二分就行了

发现这样如果sort是\(nlognlog1e9\)哒

但找第k大可以\(O(n)\)

实现是快排只进入一边

可以用\(nth\_element\)


Code:

#include <cstdio>
#include <algorithm>
#define ll long long
const int N=1e6+10;
int n,m;
ll k[N],b[N],d[N],S;
ll read()
{
ll x=0,f=1;char c=getchar();
while(c<'0'||c>'9') {if(c=='-') f=-f;c=getchar();}
while(c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();}
return x*f;
}
bool check(ll t)
{
for(int i=1;i<=n;i++)
d[i]=k[i]*t+b[i];
std::nth_element(d+1,d+n-m,d+1+n);
ll sum=0;
for(int i=n;i>n-m;i--)
{
sum+=d[i]>0?d[i]:0;
if(sum>=S) return true;
}
return false;
}
int main()
{
scanf("%d%d",&n,&m);
S=read();
for(int i=1;i<=n;i++)
k[i]=read(),b[i]=read();
ll l=0,r=1e9;
if(check(l)) return puts("0"),0;
while(l<r)
{
ll mid=l+r>>1;
if(check(mid)) r=mid;
else l=mid+1;
}
printf("%lld\n",l);
return 0;
}

2018.10.6

雅礼集训 Day6 T1 Merchant 解题报告的更多相关文章

  1. 雅礼集训 Day7 T1 Equation 解题报告

    Reverse 题目背景 小\(\text{G}\)有一个长度为\(n\)的\(01\)串\(T\),其中只有\(T_S=1\),其余位置都是\(0\).现在小\(\text{G}\)可以进行若干次以 ...

  2. 雅礼集训 Day6 T2 Equation 解题报告

    Equation 题目描述 有一棵\(n\)个点的以\(1\)为根的树,以及\(n\)个整数变量\(x_i\).树上\(i\)的父亲是\(f_i\),每条边\((i,f_i)\)有一个权值\(w_i\ ...

  3. 「雅礼集训 2017 Day2」解题报告

    「雅礼集训 2017 Day2」水箱 我怎么知道这种题目都能构造树形结构. 根据高度构造一棵树,在树上倍增找到最大的小于约束条件高度的隔板,开一个 \(vector\) 记录一下,然后对于每个 \(v ...

  4. 「雅礼集训 2017 Day1」 解题报告

    「雅礼集训 2017 Day1」市场 挺神仙的一题.涉及区间加.区间除.区间最小值和区间和.虽然标算就是暴力,但是复杂度是有保证的. 我们知道如果线段树上的一个结点,\(max=min\) 或者 \( ...

  5. 雅礼集训 Day3 T3 w 解题报告

    w 题目背景 \(\frac 14\)遇到了一道水题,双完全不会做,于是去请教小\(\text{D}\).小\(\text{D}\)看了\(0.607^2\)眼就切掉了这题,嘲讽了\(\frac 14 ...

  6. 雅礼集训 Day1 T3 画作 解题报告

    画作 题目描述 小\(\mathrm{G}\)的喜欢作画,尤其喜欢仅使用黑白两色作画. 画作可以抽象成一个\(r\times c\)大小的\(01\)矩阵.现在小\(\mathrm{G}\)构思好了他 ...

  7. 雅礼集训 Day5 T3 题 解题报告

    题 题目背景 由于出题人赶时间所以没办法编故事来作为背景. 题目描述 一开始有\(n\)个苹果,\(m\)个人依次来吃苹果,第\(i\)个人会尝试吃\(u_i\)或\(v_i\)号苹果,具体来说分三种 ...

  8. 雅礼集训 Day3 T2 u 解题报告

    u 题目背景 \(\frac 14\) 遇到了一道水题,完全不会做,于是去请教小\(\text{D}\).小\(\text{D}\)看了一眼就切掉了这题,嘲讽了\(\frac 14\)一番就离开了. ...

  9. 雅礼集训 Day3 T2 v 解题报告

    v 题目背景 \(\frac 14\)遇到了一道水题,又完全不会做,于是去请教小\(\text{D}\).小\(\text{D}\)看了\(0.607\)眼就切掉了这题,嘲讽了\(\frac 14\) ...

随机推荐

  1. 1816: [Cqoi2010]扑克牌

    Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2737  Solved: 1082[Submit][Status][Discuss] Descripti ...

  2. SAP 文本框实例

    SAP 文本框 简单实例 REPORT ZTEST001. DATA: OK_CODE LIKE SY-UCOMM, SAVE_OK LIKE SY-UCOMM. DATA: REF_EDIT_CTN ...

  3. hibernate系列之四

    数据库中表之间的关系: 一对一.一对多.多对多 一对多的建表原则:在多的一方创建外键指向一的一方的主键: 多对多的建表原则:创建一个中间表,中间表中至少有两个字段作为外键分别指向多对多双方的主键: 一 ...

  4. cordforce 495 补题 <未完>

    题目链接: http://codeforces.com/contest/1004/my A. Sonya and Hotels 分类讨论 看第一个样例解释的时候没看到后面第二行还有一个19,想了半天为 ...

  5. nuxt generate静态化后回退问题

    之前线上的项目是nuxt build后的项目发布在服务器上,pm2来管理node的进程,nuxt还是运行在node的环境里. 这个方案用了半年左右,访问速度什么的确实很快,pm2管理下的node在wi ...

  6. thinkphp5控制器向+vue的data里传值

    传一维数组传值 $array=['id'=>40,"cat_name"=>"明星产品"]; $MenuCats_info=json_encode($ ...

  7. iOS-delegate设计模式

    1. 使用场合 1> A想让B帮忙做一些事情,就让B成为A的代理 2> A想通知一下B发生了某些事情,或者想传递一些数据给B,就让B成为A的代理 3> B想监听A所做的一些事情, 就 ...

  8. Charles Dickens【查尔斯·狄更斯】

    Charles Dickens In 1812, the year Charles Dickens was born, there were 66 novels published in Britai ...

  9. C语言进阶——类型转换04

    C语言内可以进行类型转换: 强制类型转换 隐式类型转换 强制类型转换的语法: (tpye)value (type)value_name 强制类型转换的结果: 目标类型可以容纳目标值:结果不变 目标值不 ...

  10. MySQL触发器和更新操作

    一.触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动 ...