题目链接:

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. PHP判断访问者是PC端还是移动端

    function isMobile() { // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) { ...

  2. Python实现字符串反转

    将字符串 s=‘helloword’ 反转输出为 ‘drowolleh’,以下通过多种方法实现 1.字符串切片法(常用) s='helloword' r=s[::-1] print(r) #结果:dr ...

  3. shell之判断文件是否存在

    #!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" #这里的-x 参数 ...

  4. linux系统,CentOs7加新硬盘

    1,打开Vmware软件,添加一块新的硬盘,然后一直下一步. 2.通过CRT等终端软件,连接到机器 [root@Mysql ~]# lsblk    //检查一下硬盘分区信息 [root@Mysql ...

  5. 递归-PrintDigit

    static void PrintDigit(double n,int len,int count=-1) { if (n <0) { n = System.Math.Abs(n); Conso ...

  6. 【Qt开发】【Gstreamer开发】Qt error: glibconfig.h: No such file or directory #include

    今天遇到一个问题如题 但是明明安装了 glib2.0和gtk,但是仍然找不到glibconfig.h,自己在/usr/include下找来也确实没有,然后只能在全盘搜啦 位置在: /usr/lib/x ...

  7. [转帖]Oracle 起诉 Google 事件

    Oracle 起诉 Google 事件 https://www.cnblogs.com/panchanggui/p/9449842.html Oracle 是世界第二大软件公司 世界第一大DBMS公司 ...

  8. [转]Mybatis之TypeHandler使用教程

    Mybatis之TypeHandler使用教程 https://blog.csdn.net/jokemqc/article/details/81326109 深入浅出Mybatis系列(五)---Ty ...

  9. web项目获取资源文件

    首页 博客 学院 CSDN学院 下载 论坛 APP CSDN 问答 商城 活动 VIP会员 专题 招聘 ITeye GitChat GitChat 图文课 写博客 消息 1 评论 关注 点赞 回答 系 ...

  10. 1.3.1 Lock接口及其实现

    1.锁的本质 2.Lock接口使用ReentrenLock 3.读写锁使用 4.读写锁实现 Lock接口方法 有点意思的是lockInterruptibly(), 只要没有获取到锁就会一直等待,直到某 ...