题目

传送门 to luogu

题目概要
nnn 台电脑,每台电脑有电量 aia_iai​ 和耗电量 bib_ibi​ ,在每秒钟的末尾扣除电量。有一充电器,每次能够充 ccc 的电量,每秒钟的开始可以给一台电脑充电。第 ttt 秒的末尾早于第 t+1t+1t+1 秒的开始。

现在是 000 时刻,也就是第一秒的开始。在第 kkk 秒的末尾,所有电脑都会爆炸,但在此之前,不要让电量变为负数。电量为零是被允许的。第 kkk 秒的末尾时,电脑电量可以为负。

求出满足条件的最小 ccc 。ccc 不存在,输出 −1-1−1 。

数据范围与提示
1≤n,k≤2×1051\le n,k\le 2\times 10^51≤n,k≤2×105 ,1≤ai≤10121\le a_i\le 10^{12}1≤ai​≤1012 ,1≤bi≤1071\le b_i\le 10^71≤bi​≤107 。

思路

一眼二分答案。现在我们该如何检查?

考虑电量为 aaa 、耗电量为 bbb 时,能够撑多久。显然,如果过了 ttt 天就撑不下去了,一定满足 a−bt<0a-bt<0a−bt<0 即 ⌊ab⌋<t\lfloor\frac{a}{b}\rfloor<t⌊ba​⌋<t 。

那么,对于一个电脑,他本来有 aaa 的电量,耗电量为 bbb ,充电器效率为 ccc ,则 xxx 次充电后能撑到 ⌊a+xcb⌋+1\lfloor\frac{a+xc}{b}\rfloor+1⌊ba+xc​⌋+1 时刻,所以在这一秒的开始必须给此电脑充电。

因为每一个电脑都要撑到 kkk 时刻,可以将每个最晚充电时间都求出,并塞入桶中。最后检查,如果前 rrr 秒需要充电至少 r+1r+1r+1 次,一定不行。

是否存在 ccc 如何判断?显然最好的情况就是,一次充电就够用,即 c≥bikc\ge b_ikc≥bi​k ,将这个值代入检查一次即可。或者用其作为二分边界。

代码

#include <cstdio>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
inline long long readint(){long long a; scanf("%lld",&a); return a;
}const int MaxN = 200005;
long long a[MaxN], b[MaxN];int cnt[MaxN], n, k;
bool check(long long v){for(int i=0; i<k; ++i)cnt[i] = 0;int tot = 0;for(int i=1; i<=n; ++i){long long ne = a[i]/b[i]+1;long long t = a[i];while(ne < k && tot < k){++ tot, ++ cnt[ne];ne = (t += v)/b[i]+1;}if(tot == k) return false;}if(cnt[0]) return false;for(int i=1; i<k; ++i){cnt[i] += cnt[i-1];if(cnt[i] > i)return false;}return true;
}int main(){n = readint(), k = readint();for(int i=1; i<=n; ++i)a[i] = readint();for(int i=1; i<=n; ++i)b[i] = readint();long long L = 0, R = 2000000;R *= R; // R >= 2e16 即可while(L != R)if(check((L+R)>>1))R = (L+R)>>1;else L = (L+R)/2+1;if(!check(L)) puts("-1");else printf("%lld\n",L);return 0;
}

[CF1132D]Stressful Training相关推荐

  1. Codeforces 刷题记录(已停更)

    Codeforces 每日刷题记录 (已停更) 打'+'是一些有启发意义的题目,部分附上一句话题解,每日更新3题,大部分题目较水. Day ID Problem Tutorial Note 1 1 + ...

  2. 【Educational Codeforces Round 61 (Rated for Div. 2)】A.B.C.D.E.F.G

    前言 这场在最开始很顺利,A题6min1A,B题14min1A,但是由于C题过题人数太少一度认为这个C题很难,等有人过了才开始写最开始的想法,C题40min1A,过C之后发现F过的很多,去看提,发现和 ...

  3. Educational Codeforces Round 61 (Rated for Div. 2)(A、B、C、D、E、F)

    欢迎访问本菜鸡的独立博客:Codecho 比赛名称 Educational Codeforces Round 61 (Rated for Div. 2) 比赛链接 https://codeforces ...

  4. Educational-Codeforces-Round-61-ABCDF题解

    A.Regular Bracket Sequence 题意 给你四种括号的数量,问是否存在一种组合方式让所有的括号匹配 思路 水题,怎么操作都可以. AC代码 #include <bits/st ...

  5. tensorflow---alexnet training (tflearn)

    # 输入数据 import input_data mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)impo ...

  6. Python如何进行cross validation training

    以4-fold validation training为例 (1) 给定数据集data和标签集label 样本个数为 sampNum = len(data) (2) 将给定的所有examples分为1 ...

  7. HDU 6091 - Rikka with Match | 2017 Multi-University Training Contest 5

    思路来自 某FXXL 不过复杂度咋算的.. /* HDU 6091 - Rikka with Match [ 树形DP ] | 2017 Multi-University Training Conte ...

  8. [转]语音识别中区分性训练(Discriminative Training)和最大似然估计(ML)的区别...

    转:http://blog.sina.com.cn/s/blog_66f725ba0101bw8i.html 关于语音识别的声学模型训练方法已经是比较成熟的方法,一般企业或者研究机构会采用HTK工具包 ...

  9. HDU 6051 - If the starlight never fade | 2017 Multi-University Training Contest 2

    /* HDU 6051 - If the starlight never fade [ 原根,欧拉函数 ] | 2017 Multi-University Training Contest 2 题意: ...

  10. Android官方开发文档Training系列课程中文版:OpenGL绘图之应用投影与相机视图

    原文地址:http://android.xsoftlab.net/training/graphics/opengl/projection.html##transform 在OpenGL ES环境中,投 ...

最新文章

  1. 各种门锁的内部结构图_双核CUP,电镀真金把手,0.3秒开锁,欧瑞博智能门锁S2评测...
  2. finally 关键字
  3. Java虚拟机:深入详细分析Java ClassLoader原理与源码
  4. java.rmi.server.port_java.rmi.server.ExportException: internal error: ObjID already in use报错处理...
  5. PHP框架 CI与TP之MVC比较
  6. 剑指Offer之第一个只出现一次的字符
  7. 我的世界javamod怎么装_耐斯地板 | 木地板的铺装方向,你还不知道?
  8. java中遍历Map几种方法
  9. ubuntu 编译安装 apache 2.4.3
  10. 网页设计\网页制作常用软件大全
  11. 【保姆级教程】使用python实现SIR模型(包含数据集的制作与导入及最终结果的可视化)
  12. 电信 dns服务器 不稳定,网速不稳定的解决方法:修改本地DNS
  13. vs2017 git 操作重置、还原、挑拣对比
  14. 宝塔一键安装php,宝塔管理面板一键安装Tipask3.5版本教程
  15. 剪辑过的视频md5会改变
  16. Html5原生video标签禁止全屏播放的实现
  17. WPF GridSplitter中需要设置HorizontalAlignment和VerticalAlignment
  18. 算法:非负数组中两个数相与的最大结果
  19. 开放世界--OpenWorld
  20. 使用Outlook Mail App滑动操作快速处理邮件

热门文章

  1. 国际贸易术语解释通则(DEQ 目的港码头交货(……指定目的港))
  2. UVALive - 4987 Evacuation Plan
  3. 谁才是商超的救世主?
  4. linux ssh keygen r,SSH的ssh-keygen命令基本用法详解
  5. gis怎么通过水库划分子流域_基于HEC-HMS模型推求西江流域巨型水库群区间入流...
  6. Xmy的第二次python(文件操作)
  7. 没键盘计算机能启动吗,实现PC电脑无键盘鼠标开机
  8. 数据库服务器,sql
  9. 游戏显示无法连接服务器怎么回事,Game Center无法连接服务器怎么办 五种方法任你选择...
  10. 免流解密之SAOML二开