\(get\)二分新用法。

  每道题都有答案范围提示,以前只是以为是用来提示用什么类型输出的。

  从来没想过直接用它来二分。

  这道题真的刷新了我的认知啊。。。。。。

  整道题的复杂度是\(O(nlog1e9)\)。

  具体做法是,先\(check\)一下0时刻满不满足要求,如果不满足再进行二分。

关于他为什么可以二分:

  可以知道,价值是时间的一次函数,对于任意一个选中的物品的集合,我们将他们\(k、b\)加和,就可以得到对应的斜率与截距,并且,我们只关心同一个\(t\)下的最大值,画出图像,可以发现他是单调增/单调减/单谷函数。

  两种单调函数显然可以二分。

  单谷函数当左边可以满足要求时,一定会在\(check0\)时就得出答案。

  能够二分时,满足要求的点一定在右边,所以当\(check\)为\(false\)时,直接缩下界即可。

  进行\(check\)时先用二分到的\(t\)计算出价值,然后将前\(m\)个最大的加和,看是不是大于\(s\)。

Code
#include<bits/stdc++.h>
using namespace std;
namespace STD
{
#define rr register
typedef long long ll;
const int N=1e6+4;
ll n,m,s;
ll w[N];
struct node{ll k,b;}a[N];
ll read()
{
rr ll x_read=0,y_read=1;
rr char c_read=getchar();
while(c_read<'0'||c_read>'9')
{
if(c_read=='-') y_read=-1;
c_read=getchar();
}
while(c_read<='9'&&c_read>='0')
{
x_read=(x_read<<3)+(x_read<<1)+(c_read^48);
c_read=getchar();
}
return x_read*y_read;
}
bool cmp(const ll a_,const ll b_){return a_>b_;}
bool check(int t)
{
for(rr int i=1;i<=n;i++)
w[i]=a[i].k*t+a[i].b;
nth_element(w+1,w+1+m,w+1+n,cmp);
ll sum=0;
for(rr int i=1;i<=m;i++)
{
if(w[i]<0) continue;
if(sum+w[i]>=s) return 1;
sum+=w[i];
}
return 0;
}
};
using namespace STD;
int main()
{
n=read(),m=read(),s=read();
for(rr int i=1;i<=n;i++)
a[i].k=read(),a[i].b=read();
if(check(0))
{
cout<<0<<'\n';
return 0;
}
int l=1,r=1e9;
while(l<r)
{
int mid=(l+r)>>1;
if(!check(mid)) l=mid+1;
else r=mid;
}
printf("%d\n",l);
}

2021-08-09 20:34:26 星期一

Merchant的更多相关文章

  1. [最近公共祖先] POJ 3728 The merchant

    The merchant Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 4556   Accepted: 1576 Desc ...

  2. POJ 3278 The merchant

    传送门 Time Limit: 3000MS Memory Limit: 65536K Description There are N cities in a country, and there i ...

  3. poj 3728 The merchant(LCA)

    Description There are N cities in a country, and there is one and only one simple path between each ...

  4. ThoughtWorks Merchant's Guide To The Galaxy

    ThoughtWorks笔试题之Merchant's Guide To The Galaxy解析 一.背景 在某网站上看到ThoughtWorks在武汉招人,待遇在本地还算不错,就投递了简历.第二天H ...

  5. [POJ 3728]The merchant

    Description There are N cities in a country, and there is one and only one simple path between each ...

  6. opencart3图片Google Merchant Center验证通过不了的解决方法

    最近在做一个opencart项目,有对接Google Merchant Center,但是一直提示产品图片验证无法通过,ytkah看了一下图片路径,/image/cache/catalog/demo/ ...

  7. 如何查看卖家ID (Merchant ID) 亚马逊哪里找?

    如何查看卖家ID (Merchant ID) 亚马逊哪里找? 如何查看卖家ID (Merchant ID) 亚马逊哪里找? 1. 找到想要获取ID的卖家,点击店铺名(跟卖的卖家会收在”Other Se ...

  8. poj3728The merchant 【倍增】【LCA】

    There are N cities in a country, and there is one and only one simple path between each pair of citi ...

  9. POJ 3728 The merchant(LCA+DP)

    The merchant Time Limit : 6000/3000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) Total ...

  10. 雅礼集训 Day6 T1 Merchant 解题报告

    Merchant 题目描述 有\(n\)个物品,第\(i\)个物品有两个属性\(k_i,b_i\),表示它在时刻\(x\)的价值为\(k_i\times x+b_i\). 当前处于时刻\(0\),你可 ...

随机推荐

  1. PHP-FPM 远程代码执行漏洞(CVE-2019-11043)

    影响范围 在 Nginx + PHP-FPM 环境下,当启用了上述 Nginx 配置后,以下 PHP 版本受本次漏洞影响,另外,PHP 5.6版本也受此漏洞影响,但目前只能 Crash,不可以远程代码 ...

  2. Apache Flink jobmanager/logs路径遍历CVE-2020-17519

    影响版本 1.11.0 1.11.1 1.11.2 poc http://192.168.49.2:8081/jobmanager/logs/..%252f..%252f..%252f..%252f. ...

  3. IOS自动化测试环境搭建(Python & Java)

         一.前言 IOS的App自动化测试与Android的一样,也可以用appium来进行.但是IOS自动化依赖苹果的osx系统.Xcode构建等,且封闭的系统需要苹果开发者账号才可以驱动真机.A ...

  4. netty系列之:netty架构概述

    目录 简介 netty架构图 丰富的Buffer数据机构 零拷贝 统一的API 事件驱动 其他优秀的特性 总结 简介 Netty为什么这么优秀,它在JDK本身的NIO基础上又做了什么改进呢?它的架构和 ...

  5. Python中print()函数的用法

    print()函数用于打印输出 1.函数语法: print(values,sep=' ',end='\n') sep和end是print()函数常用参数 参数sep是一次打印多个元素时的间隔符号,默认 ...

  6. 华为eNSP基础入门-配置SSH远程登录

    eNSP 华为模拟器ensp (Enterprise Network Simulation Platform) 是华为官方推出的一款强大的图形化网络仿真工具平台,主要对企业网路由器.交换机.WLAN等 ...

  7. 树莓派应用Docker

    本期通过在树莓派上配置 Docker,来介绍 Docker 应用,欢迎来到"万物皆可 Docker"的时代! 什么是 Docker ? Docker 最初是 dotCloud 公司 ...

  8. [SQL]基本表的定义及其完整性约束

    在使用数据库时,绝大多数时间都是在使用基本表. SQL Server数据类型 截图来源: https://www.w3school.com.cn/sql/sql_datatypes.asp 创建基本表 ...

  9. VScode安装配置

    一.安装VScode 进入VScode官网Visual Studio Code下载 安装 二.设置中文 打开vscode 重启vscode 三.美化 四.安装拓展插件 Auto Close Tag ( ...

  10. gRPC学习之四:实战四类服务方法

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...