题解 \(by\;zj\varphi\)

对于选的物品,总值一定有在前一段区间递减,后一段递增的性质,那么就可以二分。

check()时只递归归并大的一段,用nth_element即可

Code
#include<bits/stdc++.h>
#define ri register signed
#define p(i) ++i
namespace IO{
char buf[1<<21],*p1=buf,*p2=buf;
#define gc() p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?(-1):*p1++
struct nanfeng_stream{
template<typename T>inline nanfeng_stream operator>>(T &x) {
ri f=0;x=0;register char ch=gc();
while(!isdigit(ch)) f|=ch=='-',ch=gc();
while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=gc();
return x=f?-x:x,*this;
}
}cin;
}
using IO::cin;
namespace nanfeng{
#define FI FILE *IN
#define FO FILE *OUT
template<typename T>inline T cmax(T x,T y) {return x>y?x:y;}
template<typename T>inline T cmin(T x,T y) {return x>y?y:x;}
typedef long long ll;
static const int N=1e6+7;
int k[N],b[N],n,m;
ll st[N],S,ans=1e18;
bool fg1=1,fg2=1;
inline bool check(register ll mid) {
register ll sum(0);
for (ri i(1);i<=n;p(i)) st[i]=k[i]*mid+b[i];
std::nth_element(st+1,st+n-m,st+n+1);
for (ri i(n-m+1);i<=n;p(i)) {
if (st[i]<=0) continue;
sum+=st[i];
if (sum>=S) return 1;
}
return 0;
}
inline int main() {
//FI=freopen("nanfeng.in","r",stdin);
//FO=freopen("tst.out","w",stdout);
cin >> n >> m >> S;
for (ri i(1);i<=n;p(i)) {
cin >> k[i] >> b[i];
if (k[i]>=0) fg2=0;
else if (k[i]<0) fg1=0;
}
if (n<=22) {
ri s=(1<<n)-1;
if (!S) {printf("0\n");return 0;}
for (ri i(1);i<=s;p(i)) {
register ll tmpk(0),tmpb(0);
ri nm(0);
for (ri j(0);j<n;p(j)) if ((i>>j)&1) tmpk+=k[j+1],tmpb+=b[j+1],p(nm);
if (nm>m) continue;
if (tmpb>=S) {printf("0\n");return 0;}
if (tmpk<=0) continue;
register ll ts=ceil(1.0*(S-tmpb)/tmpk);
ans=cmin(ans,ts);
}
printf("%lld\n",ans);
} else if (fg2) puts("0");
else {
ri l(0),r(1e9),res;
while(l<=r) {
ri mid(l+r>>1);
if (check(mid)) res=mid,r=mid-1;
else l=mid+1;
}
printf("%d\n",res);
}
return 0;
}
}
int main() {return nanfeng::main();}

NOIP 模拟 $34\; \rm Merchant$的更多相关文章

  1. NOIP 模拟 $34\; \rm Equation$

    题解 \(by\;zj\varphi\) 发现每个点的权值都可以表示成 \(\rm k\pm x\). 那么对于新增的方程,\(\rm x_u+x_v=k\pm x/0\) 且 \(\rm x_u+x ...

  2. NOIP 模拟 $34\; \rm Rectangle$

    题解 \(by\;zj\varphi\) 对于没有在同一行或同一列的情况,直接枚举右边界,左边界从大到小,用树状数组维护上下边界即可. 而对于有多个在一列或一行的情况,这些点将左右分成了几个区间,枚举 ...

  3. noip模拟34[惨败]

    noip模拟34 solutions 我从来不为失败找借口,因为败了就是败了,没人听你诉说任何事情 今天很伤感,以来考试没考好,二来改题改半天也改不出来 这次算是炸出来了我经常范的一些错误,比如除以0 ...

  4. NOIP模拟 1

    NOIP模拟1,到现在时间已经比较长了.. 那天是6.14,今天7.18了 //然鹅我看着最前边缺失的模拟1,还是终于忍不住把它补上,为了保持顺序2345重新发布了一遍.. #   用  户  名   ...

  5. 2021.5.22 noip模拟1

    这场考试考得很烂 连暴力都没打好 只拿了25分,,,,,,,,好好总结 T1序列 A. 序列 题目描述 HZ每周一都要举行升旗仪式,国旗班会站成一整列整齐的向前行进. 郭神作为摄像师想要选取其中一段照 ...

  6. NOIP模拟3

    期望得分:30+90+100=220 实际得分:30+0+10=40 T1智障错误:n*m是n行m列,硬是做成了m行n列 T2智障错误:读入三个数写了两个%d T3智障错误:数值相同不代表是同一个数 ...

  7. 7.22 NOIP模拟7

    又是炸掉的一次考试 T1.方程的解 本次考试最容易骗分的一道题,但是由于T2花的时间太多,我竟然连a+b=c都没判..暴力掉了40分. 首先a+b=c,只有一组解. 然后是a=1,b=1,答案是c-1 ...

  8. 20190725 NOIP模拟8

    今天起来就是虚的一批,然后7.15开始考试,整个前半个小时异常的困,然后一看题,T1一眼就看出了是KMP,但是完了,自己KMP的打法忘的一干二净,然后开始打T2,T2肝了一个tarjan点双就扔上去了 ...

  9. 20190902+0903合集-NOIP模拟

    一直没时间写QwQ 于是补一下. Day 1 晚饭吃的有点恶心…… $1s\,2s\,5s$ 还开 -O2 ?? 有点恐怖. T1 猛的一想: 把外面设成一个点, 向入口连一条权为排队时间的边 从出口 ...

随机推荐

  1. Sql Server(3)运算符的使用

    where 订货日期 between '2017/10/24' and '2017/10/30'  小的写在前面,大的后面,不可以写反 一:运算符的使用 T-SQL的运算符应用指派运算符算术运算符比较 ...

  2. ADB命令 连接WIFI检测序列号

    利用ADB 电脑与手机相连 查看序列号: adb shell  getprop ro.serialno 查看机器的SN号 adb shell getprop 查看机器的全部信息参数 查看IP地址: a ...

  3. 2021 MySQL安装教程(最新教程)- 含网盘下载

    大家好,我是 我玩亚索我会C.最近电脑重装系统了,然后就想着装个MySQL,由于很久没装过了,于是上网搜索了教程,但是发现现在MySQL安装和之前的不一样了,网上都是旧版的安装教程,所以我就做一篇新版 ...

  4. JDK安装与环境搭建.

    卸载JDK 1.删除Java安装目录 2.删除Java Home 3.删除path下Java的目录 4.打开cmd命令输入java-version 出现''不是内部或外部命令,也不是可运行的程序 或批 ...

  5. Python + Requests 知识点回顾

    http://www.downza.cn/soft/11145.html PS下载地址 http://www.bejson.com/jsonviewernew/ JSON的在线视图 import re ...

  6. Android系统编程入门系列之界面Activity响应丝滑的传统动画

    上篇文章介绍了应用程序内对用户操作响应的相关方法位置,简单的响应逻辑可以是从一个界面Activity跳转到另一个界面Activity,也可以是某些视图View的相对变化.然而不管是启动一个界面执行新界 ...

  7. JAVA基础(代码)练习题61~90

    JAVA基础 61.设计一个方法打印数组{'a','r','g','s','e','r'}中下标为1和3的的元素 package Homework_90; /** * 设计一个方法打印数组{'a',' ...

  8. 记一次 .NET 某云采购平台API 挂死分析

    一:背景 1. 讲故事 大概有两个月没写博客了,关注我的朋友应该知道我最近都把精力花在了星球,这两个月时间也陆陆续续的有朋友求助如何分析dump,有些朋友太客气了,给了大大的红包,哈哈,手里面也攒了1 ...

  9. [c++] 面向对象课程(二)-- 带指针类的设计

    class with pointer menbers string_test.cpp 1 #include "string.h" 2 #include <iostream&g ...

  10. 第十四篇 -- CPU学习二——此部分重点在AMD CPU

    一.CPU的一些英文简写或解释 Definitions: ACPI--Advanced Configuration and Power Interface APP--Adjusted Peak Per ...