Educational Codeforces Round 61 (Rated for Div. 2)D(二分,模拟,思维)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,k;
ll a[200007],b[200007],s[200007];
ll ans;
int check(ll val){
memset(s,0,sizeof(s));
int num=k;
for(int i=1;i<=n;i++){
if(!b[i])
continue;
s[min(a[i]/b[i]+1,1ll*(k+1))]++;//计算这台电脑何时需要充电
ll sum=a[i];
while(sum<1ll*k*b[i]){//如果这台电脑撑不到比赛结束
if(!num)//充电器没有档期
break;
sum+=val;//充一次电
s[min(sum/b[i]+1,1ll*(k+1))]++;//计算何时需要充电
num--;//充电器档期-1
}
}
for(int i=1;i<=k;i++){
s[i]+=s[i-1];//统计此时已经充了几次电
if(s[i]>i)//充电器做不到啊
return 0;
}
return 1;
}
int main(){
scanf("%d%d",&n,&k);
k--;
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
for(int i=1;i<=n;i++)
scanf("%lld",&b[i]);
ll l=0,r=2e12;//r为极限答案,k_max*b[i]_max,这样充一次足以满足耗电量最大的电脑度过最长的时间,和初始电量并无关联
while(l<=r){//二分答案
ll mid=(l+r)>>1;
if(check(mid)){
ans=mid;
r=mid-1;
}
else
l=mid+1;
}
if(!ans){
if(check(0))
printf("0");
else
printf("-1");
}
else
printf("%lld",ans);
}
Educational Codeforces Round 61 (Rated for Div. 2)D(二分,模拟,思维)的更多相关文章
- Educational Codeforces Round 61 (Rated for Div. 2) D,F题解
D. Stressful Training 题目链接:https://codeforces.com/contest/1132/problem/D 题意: 有n台电脑,每台电脑都有初始电量ai,也有一个 ...
- Educational Codeforces Round 61 (Rated for Div. 2) E 多重背包优化
https://codeforces.com/contest/1132/problem/E 题意 有8种物品,重量是1~8,每种数量是\(cnt[i]\)(1e16),问容量为W(1e18)的背包最多 ...
- Educational Codeforces Round 61 (Rated for Div. 2)-C. Painting the Fence 前缀和优化
题意就是给出多个区间,要求去掉两个区间,使得剩下的区间覆盖范围最大. 当然比赛的时候还是没能做出来,不得不佩服大佬的各种姿势. 当时我想的是用线段树维护区间和,然后用单点判0,维护区间间断个数.然后打 ...
- Educational Codeforces Round 61 (Rated for Div. 2)
A. Regular Bracket Sequence 题意:给出四种括号的数量 (( )) () )( 问是否可以组成合法的序列(只能排序不能插在另外一个的中间) 思路: 条件一:一个或 n个) ...
- Educational Codeforces Round 61 (Rated for Div. 2) E. Knapsack
非常经典的dp题,因为1至8的最大公约数是840,任何一个数的和中840的倍数都是可以放在一起算的, 所以我只需要统计840*8的值(每个数字(1-8)的sum%840的总和),剩下都是840的倍数 ...
- Educational Codeforces Round 61 (Rated for Div. 2) G(线段树,单调栈)
#include<bits/stdc++.h>using namespace std;int st[1000007];int top;int s[1000007],t[1000007];i ...
- Educational Codeforces Round 61 (Rated for Div. 2)F(区间DP,思维,枚举)
#include<bits/stdc++.h>typedef long long ll;const int inf=0x3f3f3f3f;using namespace std;char ...
- Educational Codeforces Round 82 (Rated for Div. 2)D(模拟)
从低位到高位枚举,当前位没有就去高位找到有的将其一步步拆分,当前位多余的合并到更高一位 #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h&g ...
- Educational Codeforces Round 96 (Rated for Div. 2) E. String Reversal (思维,逆序对)
题意:给你一个字符串,每次可以调换现字符串的相邻两个字符,问最少操作多少次使得这个字符串等于其反转过来的字符串. 题解:先考虑字符串中没有相同字符的情况,那么我们每次将目前字符串的最后一个字符一直调换 ...
随机推荐
- PHP 实现了一种代码复用的方法,称为 trait
自 PHP 5.4.0 起,PHP 实现了一种代码复用的方法,称为 trait. Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制.Trait 为了减少单继承语言的限制,使开发人员能 ...
- 通过扫码自定义链接安装iOS app,版本更新总结。
1.打包ipa,plist工具:xcode6证书:企业级开发证书 1.1)xcode6开始企业级打包时不在生成plist,需要自己编写:模版见下: <?xml version="1.0 ...
- 创建github怎样管理
创建版本库 第一步: 创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录 $mkdir learngit $cd learngit $pwd mkdir learngit 创建一个名叫“ ...
- 四 Mixer
Mixer在应用程序和基础架构后端之间提供通过中介层.它的设计将策略决策移出应用层,用运维人员能够控制的配置取而代之. Mixer的设计目的是改变层次之间的边界,以此降低总体复杂性.从服务代码中剔除策 ...
- 侯捷STL学习(八)-- 深度探索deque
layout: post title: 侯捷STL学习(八) date: 2017-07-19 tag: 侯捷STL --- 第十八节 深度探索deque上 duque内存结构 分段连续,用户看起来是 ...
- pycharm中 unittests in xxxx 运行模式
pycham中 当你运行时 ,使用的 是 Run "unittests in xxxx" 模式时候,if __name__ == '__main__': 后面的代码是不执行的 ...
- Rozor视图(c#代码与html混合编程原则)
(1)大括号的匹配原则(就近原则){} (2)html标签有截断c#代码的功能 @*服务器端的注释*@ <!--客户端注释-->
- ie6 ie7下报脚本错误"Expected identifier, string or number" 的原因和解决方法
在IE6和ie7里面,脚本报错"Expected identifier, string or number" 写下这个是个之前我已经很头疼了,因为我的代码在其他浏览器里都是正常的, ...
- Hbase表重命名 表改名
PS:现在我有个表 :test11_new ,我要给他改名 开始: 1.先disable掉表hbase(main):023:0> disable 'test11_new' 0 row(s) i ...
- ie7下z-index失效问题解决方法
绝对定位元素的“有定位属性(relative或absolute)的父元素”在渲染层次时起到了主要作用,前面的被后面的覆盖了.解决办法就是给有定位属性的父元素设置z-index 解决办法: 父级元素加上 ...