题目链接:

while(1)gugu(while(1))

闲扯

考场上怕T2正解写挂其他两题没管只打了暴力,晚上发现这题思维挺妙的

同时想吐槽出题人似乎热衷卡常...我的巨大常数现在显露无疑QAQ

分析

这道题yy出了一个似乎比solution更好理解的解法,一开始有\(n\)条一次函数,就有\(2^n\)种函数集合,显然每个集合也是一个一次函数\(T_i(x)=k_i x+b_i\)

我们把这个集合分成两种\(k_i<=0\)和\(k_i>0\),显然如果答案最后最大值的函数集合是第一种,那么显然肯定是在\(x=0\)取到的

所以我们单独把\(x=0\)拎出来考虑就可以不考虑第一种函数集合的贡献了

对于第二种\(k_i>0\)的函数集合,应该很容易发现\(max(T_i(x))\)是单调递增的的图像,可以二分找到答案要求的点

然后这题就做完了

对于0的处理其实就是把\(b_i\)最大且大于0的拿出来看看是否大于等于S就好了,虽然最后这样的函数集合不一定是第一种\(k_i<=0\)但是一定考虑进去了

二分的时候也是贪心把该点的处于前\(m\)大且大于0的单个一次函数值加起来判断一下就好了

这里有个骚操作nth_ment(l,pos,r,cmp),表示将容器中\([l,r)\)种第pos个位置的元素变成第\(pos\)大/小(视cmp函数决定),同时pos前都是大/小于第pos大/小的元素,pos后类似

代码

#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <algorithm>
#include <cctype>
#include <iostream>
#include <queue>
#include <vector>
#define ll long long
#define ri register int
using std::min;
using std::max;
using std::nth_element;
inline char nc(){
static char buf[100000],*p1=buf,*p2=buf;
return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
template <class T>inline void read(T &x){
x=0;int ne=0;char c;
while(!isdigit(c=nc()))ne=c=='-';
x=c-48;
while(isdigit(c=nc()))x=(x<<3)+(x<<1)+c-48;
x=ne?-x:x;return ;
}
const int maxn=1000005;
const int inf=0x7fffffff;
ll v[maxn],ki[maxn],bi[maxn];
int n,m;ll s;
bool ok(int x){
for(ri i=1;i<=n;i++)v[i]=ki[i]*x+bi[i];
nth_element(v+1,v+m,v+n+1,std::greater<ll>());
ll sum=0;
if(sum>=s)return 1;
for(ri i=1;i<=m;i++){
if(v[i]>0)sum+=v[i];
if(sum>=s)return 1;
}
return 0;
}
int main(){
freopen("merchant.in","r",stdin);
freopen("merchant.out","w",stdout);
read(n),read(m),read(s);
for(ri i=1;i<=n;i++){
read(ki[i]),read(bi[i]);
}
if(ok(0)){puts("0");exit(0);}
int L=1,R=1e9,ans;
while(L<=R){
int mid=(L+R)>>1;
if(ok(mid))ans=mid-1,R=mid-1;
else L=mid+1;
}
printf("%d\n",ans+1);
return 0;
}

[NOIP10.6模拟赛]1.merchant题解--思维+二分的更多相关文章

  1. [NOIP10.4模拟赛]3.z题解--思维

    题目链接: 咕咕 闲扯: 哈哈这道T3考场上又敲了5个namespace,300+行,有了前车之鉴还对拍过,本以为子任务分稳了 结果只有30分哈哈,明明用极限数据对拍过不知怎么回事最后数据又是读不全, ...

  2. [NOIP10.5模拟赛]3.c题解--思维

    题目链接 这次不咕了 https://www.luogu.org/problemnew/show/AT2389 闲扯 考场20分爆搜走人 \cy 话说这几天T3都很考验思维啊 分析 我们先钦定一只鸡( ...

  3. [NOIP10.6模拟赛]2.equation题解--DFS序+线段树

    题目链接: 咕 闲扯: 终于在集训中敲出正解(虽然与正解不完全相同),开心QAQ 首先比较巧,这题是\(Ebola\)出的一场模拟赛的一道题的树上强化版,当时还口胡出了那题的题解 然而考场上只得了86 ...

  4. [NOIP10.3模拟赛]3.w题解--神奇树形DP

    题目链接: 咕 闲扯: 这题考场上把子任务都敲满了,5个namespace,400行11k 结果爆0了哈哈,因为写了个假快读只能读入一位数,所以手测数据都过了,交上去全TLE了 把边分成三类:0. 需 ...

  5. [NOIP10.5模拟赛]1.a题解--离散化+异或线段树

    题目链接: 咕咕咕 https://www.luogu.org/problemnew/show/CF817F 闲扯 在Yali经历几天折磨后信心摧残,T1数据结构裸题考场上连暴力都TM没打满 分析 观 ...

  6. [NOIP10.4模拟赛]2.y题解--折半搜索+状压计数

    题目链接: 咕 闲扯: 这题暴力分似乎挺多,但是一些奇奇怪怪的细节没注意RE了,还是太菜了 分析: 首先我们考虑最naiive的状压DP ,\(f[u][v][state]\)表示u开头,v结尾是否存 ...

  7. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  8. 模拟赛 提米树 题解 (DP+思维)

    题意: 有一棵棵提米树,满足这样的性质: 每个点上长了一定数量的Temmie 薄片,薄片数量记为这个点的权值,这些点被标记为 1 到 n 的整数,其 中 1 号点是树的根,没有孩子的点是树上的叶子. ...

  9. DYOJ 【20220317模拟赛】瞬间移动 题解

    瞬间移动 题意 三维空间中从 \((0,0,0)\) 开始,每次移动 1,问刚好走 \(N\) 次能到 \((X,Y,Z)\) 的方案数 \(N\le10^7\),答案模 \(998244353\) ...

随机推荐

  1. 【SpringBoot】转载 springboot使用thymeleaf完成数据的页面展示

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/weixin_36380516/artic ...

  2. opencv_traincascade级联训练人脸数据

    正负样本格式:  正样本 灰度化 24*24 2000张  负样本 灰度化 50*50 1000张 训练过程  第一步:dir /b >pos.txt 以及dir /b >neg.txt ...

  3. 22 Flutter仿京东商城项目 inappbrowser 加载商品详情、保持页面状态、以及实现属性筛选业务逻辑

    加群452892873 下载对应21可文件,运行方法,建好项目,直接替换lib目录,在往pubspec.yaml添加上一下扩展. cupertino_icons: ^0.1.2 flutter_swi ...

  4. Linux 文件操作相关常用命令

    1.创建文件夹 [root@izwz9148jq0xmzrb36r113z 20190726]# mkdir aaa //创建aaa文件夹 2.创建文件 [root@izwz9148jq0xmzrb3 ...

  5. CockroachDB学习笔记——[译]Scaling Raft

    原文链接:https://www.cockroachlabs.com/blog/scaling-raft/ 原作者:Ben Darnell 原文日期:Jun 11, 2015 译:zifeiy 在Co ...

  6. android studio 开发中启动android项目报错sdk版本不一致解决方案

    安卓项目开发中新建项目后再run'的时候发现报错com.android.support:appcompat-v7依赖报错 查看下build.gredle所配置的参数: 打开项目的build.gradl ...

  7. JavaScript中new运算符的实现

    废话不多说直接进入正题,首先我们需要先知道new运算符到底做了哪些事情,再来模拟它实现这一功能. 1. 建立一个空的Object对象: 2. 把这个空对象用__proto__链接到原型 3. 用app ...

  8. Nmap工具介绍

    使用方法 实例: nmap -v scanme.nmap.org 这个选项扫描主机scanme.nmap.org中 所有的保留TCP端口.选项-v启用细节模式. nmap -sS -O scanme. ...

  9. Arduino基础入门—1.Hello World

    1.首先是下载.安装IDE. https://www.arduino.cc/en/Main/Software 2.连接开发板到电脑. 将UNO R3开发板通过数据线连接到电脑.打开设备管理器查看驱动是 ...

  10. 【DSP开发】6455EMIF

     外部设备连接接口包括外部存储器连接接口(EMIF).主机接口(HPI)等.外部存储器接口主要用来同并行存储器连接,这些存储器包括SDRAM.SBSRAM.Flash.SRAM存储器等,外部存储器接口 ...