2300专项:D. Stressful Training(二分 充电)
原题: 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]<=i\forall i\sum_{j=1}^ict[j]<=i∀i∑j=1ict[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(二分 充电)相关推荐
- AcrelCloud-9500电瓶车充电桩应用场景分析
AcrelCloud-9500电瓶车充电桩收费平台 在苏州市某街道的应用--安科瑞 崔远航 摘 要:全国各地电瓶车充电引发火灾的事故时有发生,对人民群众的生命财产安全造成了很大的威胁,本文介绍的苏州市 ...
- AcrelCloud-9500电瓶车充电桩收费平台在苏州的应用
安科瑞 徐涵 摘 要:全国各地电瓶车充电引发火灾的事故时有发生,对人民群众的生命财产安全造成了很大的威胁,本文介绍的苏州市某街道,在苏州"331"专项行动的背景下,采用4G通信方式 ...
- AcrelCloud-9500电瓶车充电桩收费平台在苏州市某街道的应用
安科瑞 华楠 摘 要:全国各地电瓶车充电引发火灾的事故时有发生,对人民群众的生命财产安全造成了很大的威胁,本文介绍的苏州市某街道,在苏州"331"专项行动的背景下,采用4G通信方式 ...
- 【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过的很多,去看提,发现和 ...
- 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 ...
- Educational-Codeforces-Round-61-ABCDF题解
A.Regular Bracket Sequence 题意 给你四种括号的数量,问是否存在一种组合方式让所有的括号匹配 思路 水题,怎么操作都可以. AC代码 #include <bits/st ...
- Codeforces 刷题记录(已停更)
Codeforces 每日刷题记录 (已停更) 打'+'是一些有启发意义的题目,部分附上一句话题解,每日更新3题,大部分题目较水. Day ID Problem Tutorial Note 1 1 + ...
- keras导入weights方式
keras导入weights方式 更多python视频教程请到菜鸟教程https://www.piaodoo.com/ keras源码engine中toplogy.py定义了加载权重的函数: load ...
- Android官方开发文档Training系列课程中文版:电池续航时间优化之监测电池电量及充电状态
原文地址:http://android.xsoftlab.net/training/monitoring-device-state/index.html 引言 作为一款优秀的APP应用,应该总是想方设 ...
- 2016 Multi-University Training Contest 1 GCD【RMQ+二分】
因为那时候没怎么补所以就分到了未搞分组里!!!然后因为标题如此之屌吧= =点击量很高,然后写的是无思路,23333,估计看题人真的是觉得博主就是个撒缺.废话不多说了,补题... update2016/ ...
最新文章
- python基于水色图像的水质评价_基于Python和遥感图像的膨胀与腐蚀操作
- 写出python中的六种数据类型_python 数据类型1
- RedHat.Enterprise.Linux.5.2 Yum源配置
- Servelt学习笔记之二——使用Servlet提取表单中的数据
- 14 调整数组顺序使奇数位于偶数前面
- 首次揭秘云原生Hologres存储引擎
- 信息服务器的设置,设置服务器SSH信息
- 由数据范围反推算法时间复杂度和需要用到的算法类型
- 常见3DMAX插件导出模型丢失贴图问题
- 南阳理工计算机与信息工程学院,南阳理工学院计算机与信息工程学院
- Apple Developer苹果签名工具
- luoguT30208 太极剑(贪心)
- ftp连接21端口出现的问题的解决方案
- 纪中训练5月23日提高组T1
- 电脑重装系统后,在连接网络的小图标上出现红叉,并且只有一个飞行模式,未出现wlan的解决思路
- 浏览器相关(持续更新)
- ukf实测信号的预测 matlab,ukf(无迹卡尔曼滤波)算法的matlab程序.
- Android 实现企业微信自动打卡任务同时支持钉钉急速打卡模式
- Flink1.11 读取kafka数据写入hive,未完待续
- Python解析DBLP的xml文件
热门文章
- 分析一下weiliu89的caffe-ssd代码吧
- win10文件资源管理器保存搜索记录的操作办法
- 《鸡啄米C++编程入门系列》系列技术文章整理收藏
- RefineNet 理解
- Blazor Day in China来喽,还不来赶紧报名参与
- 叶俊——“新零售·新未来”米友圈第九届全国精英总裁班授课圆满落幕
- Linux下校对服务器时间同网络时间一致
- One Step By One Step 解析OkHttp3 - Dispatcher (一)
- 【Leetcode】| Largest Number
- 万门python激活码_万门Python基础趣讲精练