原题: http://codeforces.com/problemset/problem/1132/D

题意: k-1分钟,n个点,初值为ai,每分钟消耗bi。你现在可以选择一个p大小的充电器,每分钟选择一个点充。问最小的p使得没有一个点在任意一分钟小于0。

解析:

二分答案值,对于答案p进行分析。

对于每个点,只有当它变成负数的时候再+p。而如果前面有几分钟没有加过,我可以让那分钟充这个点。形象一定,如果得出的增加时间为1、3、4、4、5,那么我可以让空出来的2来充4,所以只要满足∀i∑j=1ict[j]&lt;=i\forall i\sum_{j=1}^ict[j]&lt;=i∀i∑j=1i​ct[j]<=i即可。

这个在什么时候判呢?因为充电次数最多为k-1,所以我可以每次充电时候查询当前时间即可。
最后再从1~k判一遍即可。

为什么最后还要再判一遍?例如第一个点用了2、2、3,发现没什么问题,第二点用了1,也没有问题。但是结果是错的。

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=(int)(a);i<=(int)(b);i++)
#define LL long long
const int maxn=2e5+5;
LL a[maxn],b[maxn];
LL tr[maxn];
int n,k;
void update(int p,int v){while(p<=k){tr[p]+=v;p+=p&-p;}
}
LL query(int p){LL res=0;while(p){res+=tr[p];p-=p&-p;}return res;
}
bool check(LL p){memset(tr,0,sizeof tr);rep(i,1,n){LL ct=1;LL now=a[i];while(1){LL sub=now/b[i];ct+=sub;now-=sub*b[i];if(ct>=k)break;now-=b[i];while(now<0){update(ct,1);if(query(ct)>ct)return 0;now+=p;}ct++;}}rep(i,1,k){if(query(i)>i)return 0;}return 1;
}int main(){ios::sync_with_stdio(false);cin.tie(0);cin>>n>>k;rep(i,1,n)cin>>a[i];rep(i,1,n)cin>>b[i];if(k==1){cout<<0<<endl;return 0;}LL l=0,r=1e18;if(check(0))cout<<0<<endl;else if(!check(1e18))cout<<-1<<endl;else{while(r-l>1){LL mid=l+r>>1;if(check(mid))r=mid;else l=mid;}cout<<r<<endl;}
}

2300专项:D. Stressful Training(二分 充电)相关推荐

  1. AcrelCloud-9500电瓶车充电桩应用场景分析

    AcrelCloud-9500电瓶车充电桩收费平台 在苏州市某街道的应用--安科瑞 崔远航 摘 要:全国各地电瓶车充电引发火灾的事故时有发生,对人民群众的生命财产安全造成了很大的威胁,本文介绍的苏州市 ...

  2. AcrelCloud-9500电瓶车充电桩收费平台在苏州的应用

    安科瑞 徐涵 摘 要:全国各地电瓶车充电引发火灾的事故时有发生,对人民群众的生命财产安全造成了很大的威胁,本文介绍的苏州市某街道,在苏州"331"专项行动的背景下,采用4G通信方式 ...

  3. AcrelCloud-9500电瓶车充电桩收费平台在苏州市某街道的应用

    安科瑞 华楠 摘 要:全国各地电瓶车充电引发火灾的事故时有发生,对人民群众的生命财产安全造成了很大的威胁,本文介绍的苏州市某街道,在苏州"331"专项行动的背景下,采用4G通信方式 ...

  4. 【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过的很多,去看提,发现和 ...

  5. 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 ...

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

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

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

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

  8. keras导入weights方式

    keras导入weights方式 更多python视频教程请到菜鸟教程https://www.piaodoo.com/ keras源码engine中toplogy.py定义了加载权重的函数: load ...

  9. Android官方开发文档Training系列课程中文版:电池续航时间优化之监测电池电量及充电状态

    原文地址:http://android.xsoftlab.net/training/monitoring-device-state/index.html 引言 作为一款优秀的APP应用,应该总是想方设 ...

  10. 2016 Multi-University Training Contest 1 GCD【RMQ+二分】

    因为那时候没怎么补所以就分到了未搞分组里!!!然后因为标题如此之屌吧= =点击量很高,然后写的是无思路,23333,估计看题人真的是觉得博主就是个撒缺.废话不多说了,补题... update2016/ ...

最新文章

  1. python基于水色图像的水质评价_基于Python和遥感图像的膨胀与腐蚀操作
  2. 写出python中的六种数据类型_python 数据类型1
  3. RedHat.Enterprise.Linux.5.2 Yum源配置
  4. Servelt学习笔记之二——使用Servlet提取表单中的数据
  5. 14 调整数组顺序使奇数位于偶数前面
  6. 首次揭秘云原生Hologres存储引擎
  7. 信息服务器的设置,设置服务器SSH信息
  8. 由数据范围反推算法时间复杂度和需要用到的算法类型
  9. 常见3DMAX插件导出模型丢失贴图问题
  10. 南阳理工计算机与信息工程学院,南阳理工学院计算机与信息工程学院
  11. Apple Developer苹果签名工具
  12. luoguT30208 太极剑(贪心)
  13. ftp连接21端口出现的问题的解决方案
  14. 纪中训练5月23日提高组T1
  15. 电脑重装系统后,在连接网络的小图标上出现红叉,并且只有一个飞行模式,未出现wlan的解决思路
  16. 浏览器相关(持续更新)
  17. ukf实测信号的预测 matlab,ukf(无迹卡尔曼滤波)算法的matlab程序.
  18. Android 实现企业微信自动打卡任务同时支持钉钉急速打卡模式
  19. Flink1.11 读取kafka数据写入hive,未完待续
  20. Python解析DBLP的xml文件

热门文章

  1. 分析一下weiliu89的caffe-ssd代码吧
  2. win10文件资源管理器保存搜索记录的操作办法
  3. 《鸡啄米C++编程入门系列》系列技术文章整理收藏
  4. RefineNet 理解
  5. Blazor Day in China来喽,还不来赶紧报名参与
  6. 叶俊——“新零售·新未来”米友圈第九届全国精英总裁班授课圆满落幕
  7. Linux下校对服务器时间同网络时间一致
  8. One Step By One Step 解析OkHttp3 - Dispatcher (一)
  9. 【Leetcode】| Largest Number
  10. 万门python激活码_万门Python基础趣讲精练